Browse Source

成本合并服务器

yuanrf 1 year ago
parent
commit
4aca6bf6f9
50 changed files with 3119 additions and 98 deletions
  1. 3 0
      OASystem/EntitySync/Program.cs
  2. 406 1
      OASystem/OASystem.Api/Controllers/AuthController.cs
  3. 1 1
      OASystem/OASystem.Api/Controllers/BusinessController.cs
  4. 79 2
      OASystem/OASystem.Api/Controllers/FinancialController.cs
  5. 303 4
      OASystem/OASystem.Api/Controllers/GroupsController.cs
  6. 80 39
      OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs
  7. 1 1
      OASystem/OASystem.Api/Controllers/SystemController.cs
  8. 274 11
      OASystem/OASystem.Api/OAMethodLib/PayrollComputation.cs
  9. 6 9
      OASystem/OASystem.Api/OAMethodLib/QiYeWeChatAPI/QiYeWeChatApiService.cs
  10. 9 0
      OASystem/OASystem.Domain/AutoMappers/_baseMappingProfile.cs
  11. 121 0
      OASystem/OASystem.Domain/Dtos/Financial/ForForeignReceivablesNewDto.cs
  12. 103 0
      OASystem/OASystem.Domain/Dtos/Groups/CarTouristGuideGroundDto.cs
  13. 18 0
      OASystem/OASystem.Domain/Dtos/Groups/EnterExitCostDto.cs
  14. 1 1
      OASystem/OASystem.Domain/Dtos/Groups/GroupListDto.cs
  15. 142 0
      OASystem/OASystem.Domain/Dtos/Groups/VisaPriceDto.cs
  16. 8 1
      OASystem/OASystem.Domain/Dtos/PersonnelModule/WageSheetMonthWorkdaysDto.cs
  17. 4 0
      OASystem/OASystem.Domain/Dtos/Resource/LocalGuideDataDto.cs
  18. 4 1
      OASystem/OASystem.Domain/Entities/EntityBase.cs
  19. 102 0
      OASystem/OASystem.Domain/Entities/Groups/Grp_CarTouristGuideGroundReservations.cs
  20. 46 0
      OASystem/OASystem.Domain/Entities/Groups/Grp_CarTouristGuideGroundReservationsContent.cs
  21. 3 3
      OASystem/OASystem.Domain/Entities/Groups/Grp_Ommission.cs
  22. 54 0
      OASystem/OASystem.Domain/Entities/Groups/Grp_VisaInfo.cs
  23. 0 1
      OASystem/OASystem.Domain/Entities/Resource/Res_CarGuides.cs
  24. 4 0
      OASystem/OASystem.Domain/Entities/Resource/Res_LocalGuideData.cs
  25. 3 3
      OASystem/OASystem.Domain/Entities/System/Sys_Calendar.cs
  26. 5 5
      OASystem/OASystem.Domain/Entities/System/Sys_Users.cs
  27. 110 0
      OASystem/OASystem.Domain/ViewModels/Financial/Fin_ForeignReceivablesView.cs
  28. 73 0
      OASystem/OASystem.Domain/ViewModels/Groups/EnterExitCostView.cs
  29. 37 0
      OASystem/OASystem.Domain/ViewModels/Groups/Grp_CarTouristGuideGroundView.cs
  30. 26 0
      OASystem/OASystem.Domain/ViewModels/Groups/VisaInfoView.cs
  31. 2 0
      OASystem/OASystem.Domain/ViewModels/PersonnelModule/WageSheetMonthView.cs
  32. 1 1
      OASystem/OASystem.Domain/ViewModels/PersonnelModule/WageSheetView.cs
  33. 2 0
      OASystem/OASystem.Domain/ViewModels/QiYeWeChat/ApprovalDataView.cs
  34. 353 0
      OASystem/OASystem.Domain/ViewModels/System/OA2014UsersView.cs
  35. 2 0
      OASystem/OASystem.Domain/ViewModels/System/SetDataView.cs
  36. 4 0
      OASystem/OASystem.Domain/ViewModels/ViewBase.cs
  37. 137 1
      OASystem/OASystem.Infrastructure/Repositories/Financial/ForeignReceivablesRepository.cs
  38. 4 0
      OASystem/OASystem.Infrastructure/Repositories/Groups/AirTicketResRepository.cs
  39. 221 0
      OASystem/OASystem.Infrastructure/Repositories/Groups/CarTouristGuideGroundRepository.cs
  40. 4 0
      OASystem/OASystem.Infrastructure/Repositories/Groups/DecreasePaymentsRepository.cs
  41. 2 2
      OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationInfoRepository.cs
  42. 36 3
      OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationVisaRepository.cs
  43. 1 1
      OASystem/OASystem.Infrastructure/Repositories/Groups/EnterExitCostRepository.cs
  44. 4 0
      OASystem/OASystem.Infrastructure/Repositories/Groups/InvitationOfficialActivitiesRepository.cs
  45. 286 0
      OASystem/OASystem.Infrastructure/Repositories/Groups/VisaPriceRepository.cs
  46. 11 3
      OASystem/OASystem.Infrastructure/Repositories/Login/LoginRepository.cs
  47. 5 1
      OASystem/OASystem.Infrastructure/Repositories/Resource/InvitationOfficialActivityDataRepository.cs
  48. 1 0
      OASystem/OASystem.Infrastructure/Repositories/Resource/LocalGuideDataRepository.cs
  49. 3 3
      OASystem/OASystem.Infrastructure/Repositories/System/UsersRepository.cs
  50. 14 0
      OASystem/OASystem.Infrastructure/Tools/CommonFun.cs

+ 3 - 0
OASystem/EntitySync/Program.cs

@@ -113,5 +113,8 @@ db.CodeFirst.SetStringDefaultLength(50).BackupTable().InitTables(new Type[]
     //typeof(Grp_CheckBoxs)  //成本选中
     //typeof(Grp_GroupCost) //成本数据信息
     //typeof(Grp_CostTypeHotelNumber)//分段房间数量
+    //typeof(Grp_VisaInfo)
+    typeof(Grp_CarTouristGuideGroundReservations),
+    typeof(Grp_CarTouristGuideGroundReservationsContent)
 });
 Console.WriteLine("数据库结构同步完成!");

+ 406 - 1
OASystem/OASystem.Api/Controllers/AuthController.cs

@@ -13,6 +13,7 @@ using OASystem.API.OAMethodLib.QiYeWeChatAPI;
 using OASystem.Domain.Dtos.QiYeWeChat;
 using OASystem.Domain.Entities.System;
 using TinyPinyin;
+using System.Globalization;
 
 namespace OASystem.API.Controllers
 {
@@ -230,7 +231,7 @@ namespace OASystem.API.Controllers
             var userData = _loginRep.Register(dto);
             if (userData.Result.Code != 0)
             {
-                return Ok(JsonView(false, "注册失败!"));
+                return Ok(JsonView(false, userData.Result.Msg));
             }
 
             return Ok(JsonView(true, userData.Result.Msg));
@@ -286,5 +287,409 @@ namespace OASystem.API.Controllers
 
             return Ok(JsonView(view));
         }
+
+        ///// <summary>
+        ///// 员工信息 迁移
+        ///// Old OA To New OA
+        ///// </summary>
+        ///// <returns></returns>
+        //[HttpPost("UpdateUserDataOldOAToNewOA")]
+        //[ProducesResponseType(typeof(LoginView), StatusCodes.Status200OK)]
+        //public async Task<IActionResult> UpdateUserDataOldOAToNewOA()
+        //{
+        //    dynamic view = null;
+
+        //    try
+        //    {
+        //        var _sqlSuar = _loginRep._sqlSugar;
+
+        //        var oldOaUsersData = await _sqlSuar.Queryable<OA2014UsersView>().AS("OA2014.dbo.Users").ToListAsync();
+        //        var newOaCompanyData = await _sqlSuar.Queryable<Sys_Company>().ToListAsync();
+        //        var newOaDepartmentData = await _sqlSuar.Queryable<Sys_Department>().ToListAsync();
+        //        var newOaJobPostData = await _sqlSuar.Queryable<Sys_JobPost>().ToListAsync();
+        //        List<Sys_Users> newOaUserDatas = new List<Sys_Users>();
+
+        //        foreach (var oldUser in oldOaUsersData)
+        //        {
+        //            int depId = 0, postId = 0;
+        //            #region 处理部门岗位
+
+        //            int did = oldUser.Did;
+        //            string post = oldUser.Post;
+        //            switch (did)
+        //            {
+        //                case 1 : //信息部
+        //                    depId = 2;
+        //                    if (post.Equals("信息部经理")) postId = 4;
+        //                    else if (post.Equals("美工")) { depId = 5; postId = 18; }
+        //                    else if(post.Equals("网络推广")) postId = 46;
+        //                    else if (post.Equals("软件开发")) postId = 5;
+        //                    else if (post.Equals("平面设计师")) { depId = 5; postId = 18; }
+        //                    else if (post.Equals("平面设计")) { depId = 5; postId = 18; }
+        //                    else if (post.Equals("平面设计师")) { depId = 5; postId = 18; }
+        //                    else if (post.Equals("软件工程师")) postId = 5;
+        //                    else if (post.Equals("OP操作")) { depId = 7; postId = 28; }
+        //                    else if (post.Equals("软件工程师.")) postId = 5;
+        //                    else if (post.Equals(".net工程师")) postId = 5;
+        //                    else if (post.Equals("安卓开发工程师")) postId = 7;
+        //                    else if (post.Equals("web前端")) postId = 6;
+        //                    else if (post.Equals("Web后端开发")) postId = 5;
+        //                    break; 
+        //                case 2 : //财务部
+        //                    depId=3;
+        //                    if (post.Equals("主管")) postId = 47;
+        //                    else if (post.Equals("财务总监")) { postId = 9; }
+        //                    else if (post.Equals("会计")) { postId = 10; }
+        //                    else if (post.Equals("财务经理")) { postId = 47; }
+        //                    else if (post.Equals("财务助理")) { postId = 50; }
+        //                    else if (post.Equals("出纳")) { postId = 48; }
+        //                    else { postId = 10; }
+
+        //                    break;
+        //                case 3: //人事部
+        //                    depId = 4;
+        //                    if (post.Equals("主管")) postId = 51;
+        //                    else if (post.Equals("人事部主管")) { postId = 51; }
+        //                    else if (post.Equals("人事行政主管")) { postId = 51; }
+        //                    else if (post.Equals("行政人事助理")) { postId = 52; }
+        //                    else if (post.Equals("人事助理")) { postId = 52; }
+        //                    else if (post.Equals("人事主管")) { postId = 51; }
+        //                    else if (post.Equals("行政人事专员")) { postId = 12; }
+        //                    else if (post.Equals("行政司机")) { postId = 14; }
+        //                    else if (post.Equals("司机")) { postId = 14; }
+        //                    else if (post.Equals("统筹执行")) { postId = 12; }
+        //                    else if (post.Equals("培训专员")) { postId = 13; }
+        //                    else if (post.Equals("人事经理")) { postId = 11; }
+        //                    else if (post.Equals("前台")) { postId = 33; }
+        //                    else if (post.Equals("人事行政经理")) { postId = 11; }
+        //                    else if (post.Equals("人事部经理")) { postId = 11; }
+        //                    else if (post.Equals("人事专员")) { postId = 12; }
+        //                    else if (post.Equals("人事经理")) { postId = 11; }
+        //                    else postId = 12;
+
+        //                    break;
+        //                case 4: //国交部
+        //                    //22   7   主管
+        //                    //23   7   计调
+        //                    //24   7   机票
+        //                    //25   7   酒店
+        //                    //26   7   签证
+        //                    //27   7   商邀
+        //                    //28   7   OP
+        //                    //32   7   经理
+        //                    depId = 7;
+        //                    if (post.Equals("酒店")) postId = 25;
+        //                    else if (post.Equals("经理")) { postId = 32; }
+        //                    else if (post.Equals("OP专员")) { postId = 28; }
+        //                    else if (post.Equals("酒店预订")) { postId = 25; }
+        //                    else if (post.Equals("商务邀请")) { postId = 27; }
+        //                    else if (post.Equals("-")) { postId = 0; }
+        //                    else if (post.Equals("签证专员")) { postId = 26; }
+        //                    else if (post.Equals("OP操作")) { postId = 28; }
+        //                    else if (post.Equals("司机")) { postId = 14; }
+        //                    else if (post.Equals("国际交流部经理")) { postId = 32; }
+        //                    else if (post.Equals("机票酒店")) { postId = 24; }
+        //                    else if (post.Equals("签证")) { postId = 26; }
+        //                    else if (post.Equals("票房")) { postId = 24; }
+        //                    else if (post.Equals("票务专员")) { postId = 24; }
+        //                    else if (post.Equals("酒店/机票")) { postId = 24; }
+        //                    else if (post.Equals("OP")) { postId = 28; }
+        //                    else if (post.Equals("主管")) { postId = 22; }
+        //                    else if (post.Equals("订票专员")) { postId = 24; }
+        //                    else if (post.Equals("机票")) { postId = 24; }
+        //                    else if (post.Equals("国交部经理")) { postId = 32; }
+        //                    else if (post.Equals("计调")) { postId = 23; }
+        //                    else if (post.Equals("票务")) { postId = 24; }
+        //                    else if (post.Equals("国交部主管")) { postId = 22; }
+        //                    else if (post.Equals("暂无")) { postId = 22; }
+        //                    else if (post.Equals("初级OP")) { postId = 28; }
+        //                    else if (post.Equals("计调")) { postId = 23; }
+        //                    else { postId = 0; }
+        //                        break;
+        //                case 5: //会展部
+        //                    //15   5   经理
+        //                    //16   5   文案策划
+        //                    //17   5   活动执行
+        //                    //18   5   平面设计师
+        //                    //19   5   3D设计师
+        //                    depId = 5;
+        //                    if (post.Equals("-")) postId = 16;
+        //                    break;
+        //                case 6: //市场销售部
+        //                    //20   6   经理
+        //                    //21   6   市场专员
+        //                    //53   6   主管
+        //                    depId = 6;
+        //                    if (post.Equals("主管")) postId = 53;
+        //                    else if (post.Equals("-")) postId = 21;
+        //                    else if (post.Equals("销售总监")) postId = 53;
+        //                    else if (post.Equals("市场专员")) postId = 21;
+        //                    else if (post.Equals("销售专员")) postId = 54;
+        //                    else if (post.Equals("市场助理")) postId = 55;
+        //                    else if (post.Equals("销售")) postId = 54;
+        //                    break;
+        //                case 99: //总经办
+        //                         //1    1   总经理
+        //                         //2    1   副总经理
+        //                         //3    1   总经理助理
+
+        //                    depId = 1;
+        //                    if (post.Equals("总经理")) postId = 1;
+        //                    else if (post.Equals("副总")) postId = 2;
+        //                    break;
+        //                case 107: //会议会展策划部
+        //                    //15   5   经理
+        //                    //16   5   文案策划
+        //                    //17   5   活动执行
+        //                    //18   5   平面设计师
+        //                    //19   5   3D设计师
+        //                    //56   5   销售
+        //                    //46   5   网络推广
+        //                    //57   5   市场推广
+        //                    depId = 5;
+        //                    if (post.Equals("销售")) postId = 56;
+        //                    else if (post.Equals("策划执行")) postId = 16;
+        //                    else if (post.Equals("策活动划")) postId = 16;
+        //                    else if (post.Equals("活动执行")) postId = 17;
+        //                    else if (post.Equals("网络媒介推广")) postId = 46;
+        //                    else if (post.Equals("媒介主任")) postId = 46;
+        //                    else if (post.Equals("公关部经理")) postId = 15;
+        //                    else if (post.Equals("项目执行")) postId = 17;
+        //                    else if (post.Equals("市场推广")) postId = 57;
+        //                    else if (post.Equals("策划")) postId = 16;
+        //                    else if (post.Equals("3D设计师")) postId = 19;
+        //                    else if (post.Equals("平面设计")) postId = 18;
+        //                    else if (post.Equals("设计")) postId = 18;
+        //                    else if (post.Equals("活动策划")) postId = 16;
+        //                    else if (post.Equals("活动策划执行")) postId = 17;
+        //                    else if (post.Equals("高级活动策划")) postId = 16;
+        //                    else postId = 0;
+        //                    break;
+        //                case 115:
+        //                    if (post.Equals("系统管理员")) { depId = 9; postId = 31; }
+        //                    else if (post.Equals("后勤专员")) { depId = 5; postId = 58; }
+
+        //                    break;
+        //                case 287: //会展部
+        //                          //59  2   17  经理
+        //                          //60  2   17  主管
+        //                          //61  2   17  会展专员
+        //                          //62  2   17  会展销售
+        //                          //63  2   17  会展策划
+        //                          //64  2   17  招商专员
+        //                          //65  2   17  媒介专员
+        //                    depId = 17;
+        //                    if (post.Equals("会展部经理")) postId = 59;
+        //                    else if (post.Equals("会展专员")) postId = 61;
+        //                    else if (post.Equals("会展销售")) postId = 62;
+        //                    else if (post.Equals("招商招展")) postId = 63;
+        //                    else if (post.Equals("会展部主管")) postId = 60;
+        //                    else if (post.Equals("媒介专员")) postId = 65;
+        //                    else if (post.Equals("会展策划")) postId = 63;
+        //                    else if (post.Equals("招商专员")) postId = 64;
+        //                    else postId = 61;
+        //                    break;
+        //                case 304: //总经理助理
+        //                          //1    1   总经理
+        //                          //2    1   副总经理
+        //                          //3    1   总经理助理
+
+        //                    depId = 1;
+        //                    postId = 3;
+        //                    break;
+        //                case 323: //海外游学部
+        //                    //66	3	19	游学顾问
+        //                    depId = 19;
+        //                    postId = 66;
+        //                    break;
+        //                case 335: //会议会展策划部
+        //                          //15   5   经理
+        //                          //16   5   文案策划
+        //                          //17   5   活动执行
+        //                          //18   5   平面设计师
+        //                          //19   5   3D设计师
+        //                          //56   5   销售
+        //                          //46   5   网络推广
+        //                          //57   5   市场推广
+        //                          //67   5   策划主管 
+        //                    depId = 5;
+        //                    if (post.Equals("会展专员")) { depId = 17; postId = 61; }
+        //                    else if (post.Equals("策划执行")) postId = 16;
+        //                    else if (post.Equals("策划主管")) postId = 67;
+        //                    else if (post.Equals("策划")) postId = 16;
+        //                    else if (post.Equals("文案")) postId = 16;
+        //                    else if (post.Equals("策划执行")) postId = 17;
+        //                    else if (post.Equals("执行专员 ")) postId = 17;
+        //                    break;
+        //                case 761://项目部
+        //                         //20   6   经理
+        //                         //21   6   市场专员
+        //                         //53   6   主管
+
+        //                    if (post.Equals("销售主管")) { depId = 6; postId = 20; }
+        //                    else if (post.Equals("场站经理")) { depId = 6; postId = 53; }
+        //                    else if (post.Equals("暂无")) { depId = 5; postId = 58; }
+        //                    else
+        //                    {
+        //                        if (oldUser.CnName.Equals("许婷"))
+        //                        {
+        //                            depId = 5; postId = 16;
+        //                        }
+        //                        else if (oldUser.CnName.Equals("陈雪"))
+        //                        {
+        //                            depId = 5; postId = 17;
+        //                        }
+        //                    }
+        //                    break;
+        //                default:
+        //                    break;
+        //            }
+        //            #endregion
+
+        //            string idCrad = string.Empty;
+        //            string idCradNumber = string.Empty;
+        //            DateTime? birthday = null;
+        //            if (!string.IsNullOrEmpty(oldUser.IDCard))
+        //            {
+        //                idCrad = oldUser.IDCard.Trim();
+                        
+        //                #region 处理身份证Number 出生日期
+        //                if (idCrad.ValidateIdNumber())
+        //                {
+        //                    idCradNumber = idCrad.ToString();
+        //                    string birthDate = idCrad.Substring(6, 8);  // 提取从第6位开始的8个字符,即出生日期部分
+        //                    birthday = new DateTime(int.Parse(birthDate.Substring(0, 4)), int.Parse(birthDate.Substring(4, 2)), int.Parse(birthDate.Substring(6, 2)));
+
+        //                }
+        //                #endregion
+        //            }
+
+
+
+        //            DateTime? startWorkDate = null;
+        //            #region 判断是否是日期格式的字符串
+        //            string format = "yyyy-MM-dd";     // 日期格式
+        //            DateTime date;
+        //            bool isParsed = DateTime.TryParseExact(oldUser.StartWorkDate, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out date);
+
+        //            if (isParsed)
+        //            {
+        //                startWorkDate = date;
+        //            }
+
+        //            #endregion
+
+        //            int education = 0;
+        //            #region 处理学历
+
+        //            if (!string.IsNullOrEmpty(oldUser.Education))
+        //            {
+        //                //0 未设置 1 小学、2 初中、3 高中、4 专科、5 本科、6 研究生
+        //                if (oldUser.Education.Equals("本科")) education = 5;
+        //                else if (oldUser.Education.Equals("大学专科")) education = 4;
+        //                else if (oldUser.Education.Equals("大专")) education = 4;
+        //                else if (oldUser.Education.Equals("全日制本科")) education = 5;
+        //                else if (oldUser.Education.Equals("硕士")) education = 6;
+        //                else if (oldUser.Education.Equals("硕士研究生")) education = 6;
+        //                else if (oldUser.Education.Equals("学士")) education = 6;
+        //                else if (oldUser.Education.Equals("研究生")) education = 6;
+        //                else if (oldUser.Education.Equals("专科")) education = 4;
+        //            }
+        //            #endregion
+
+        //            int theOrAdultEducation = 0;
+        //            #region 处理统招/成人
+
+        //            if (!string.IsNullOrEmpty(oldUser.TheOrAdultEducation))
+        //            {
+        //                //0 未设置 1 成教 2 统招 3 留学
+        //                if (oldUser.TheOrAdultEducation.Equals("成教")) theOrAdultEducation = 1;
+        //                if (oldUser.TheOrAdultEducation.Equals("自考")) theOrAdultEducation = 1;
+        //                else if (oldUser.TheOrAdultEducation.Equals("统招")) theOrAdultEducation = 2;
+        //                else if (oldUser.TheOrAdultEducation.Equals("留学")) theOrAdultEducation = 3;
+
+        //            }
+
+
+        //            #endregion
+
+        //            Sys_Users user = new Sys_Users()
+        //            {
+        //                Id = oldUser.Id,
+        //                CnName = oldUser.CnName,
+        //                EnName = oldUser.EnName,
+        //                Number = oldUser.Number,
+        //                CompanyId = 2,
+        //                DepId = depId,
+        //                JobPostId = postId,
+        //                Password = oldUser.Password,
+        //                Sex = oldUser.Sex,
+        //                Ext = oldUser.Ext,
+        //                Phone = oldUser.Phone,
+        //                UrgentPhone = oldUser.UrgentPhone,
+        //                Email = oldUser.Email,
+        //                Address = oldUser.Address,
+        //                Edate = oldUser.Edate,
+        //                Rdate = oldUser.Rdate,
+        //                Seniority = oldUser.Seniority,
+        //                Birthday = birthday,
+        //                IDCard = idCradNumber,
+        //                StartWorkDate = startWorkDate,
+        //                GraduateInstitutions = oldUser.GraduateInstitutions,
+        //                Professional = oldUser.Professional,
+        //                Education = education,
+        //                TheOrAdultEducation = theOrAdultEducation,
+        //                MaritalStatus = oldUser.MaritalStatus,
+        //                HomeAddress = oldUser.HomeAddress,
+        //                UsePeriod = oldUser.UsePeriod,
+        //                WorkExperience = oldUser.WorkExperience,
+        //                Certificate = oldUser.Certificate,
+        //                HrAudit = 1,
+        //                CreateUserId = 208,
+        //                CreateTime = DateTime.Now,
+        //                DeleteUserId = null,
+        //                DeleteTime = string.Empty,
+        //                Remark = oldUser.Remark,
+        //                IsDel = oldUser.IsDel,
+        //            };
+
+        //            newOaUserDatas.Add(user);
+        //        }
+
+        //        if (newOaUserDatas.Count > 0)
+        //        {
+
+        //            //执行删除
+        //            bool resetStatus = _sqlSuar.DbMaintenance.TruncateTable<Sys_Users>();
+
+        //            //执行批量添加
+        //            int addTotal = await _sqlSuar.Insertable(newOaUserDatas).IgnoreColumns(it => it.Id).ExecuteCommandAsync();
+
+        //        }
+
+
+        //        view = new
+        //        {
+        //            Code = 200,
+        //            Msg = "操作成功!",
+        //            Data = newOaUserDatas
+
+        //        };
+        //    }
+        //    catch (Exception ex)
+        //    {
+
+        //        view = new
+        //        {
+        //            Code = 400,
+        //            Msg = ex.Message
+
+        //        };
+        //    }
+
+
+        //    return Ok(JsonView(view));
+        //}
+    
     }
 }

+ 1 - 1
OASystem/OASystem.Api/Controllers/BusinessController.cs

@@ -80,7 +80,7 @@ namespace OASystem.API.Controllers
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        [HttpPost]
+        [HttpGet,HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> PostCurrencyList()
         {

+ 79 - 2
OASystem/OASystem.Api/Controllers/FinancialController.cs

@@ -624,6 +624,31 @@ namespace OASystem.API.Controllers
 
         #region 对外收款账单
 
+        /// <summary>
+        /// 对外收款账单 
+        /// 数据源
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostGroupReceivablesDataSource()
+        {
+            try
+            {
+                Result ffrData = await _ForForeignReceivablesRep.PostDataSource();
+                if (ffrData.Code != 0)
+                {
+                    return Ok(JsonView(false, ffrData.Msg));
+                }
+                return Ok(JsonView(true, ffrData.Msg, ffrData.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+                throw;
+            }
+        }
 
         /// <summary>
         /// 对外收款账单 
@@ -633,11 +658,63 @@ namespace OASystem.API.Controllers
         /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> PostGroupReceivablesInfoByDiId(ForForeignReceivablesInfoDto dto)
+        public async Task<IActionResult> PostGroupReceivablesInfoByDiId(ForForeignReceivablesNewDto dto)
         {
             try
             {
-                Result ffrData = await _ForForeignReceivablesRep.GetGroupReceivablesInfoByDiId(dto);
+                Result ffrData = await _ForForeignReceivablesRep.PostGroupReceivablesInfoByDiId(dto);
+                if (ffrData.Code != 0)
+                {
+                    return Ok(JsonView(false, ffrData.Msg));
+                }
+                return Ok(JsonView(true, ffrData.Msg, ffrData.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+                throw;
+            }
+        }
+
+        /// <summary>
+        /// 对外收款账单 
+        /// 添加 And 更新
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostReceivablesSave(ForeignReceivablesSaveDto dto)
+        {
+            try
+            {
+                Result ffrData = await _ForForeignReceivablesRep.PostReceivablesSave(dto);
+                if (ffrData.Code != 0)
+                {
+                    return Ok(JsonView(false, ffrData.Msg));
+                }
+                return Ok(JsonView(true, ffrData.Msg, ffrData.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+                throw;
+            }
+        }
+
+        /// <summary>
+        /// 已收账单 
+        /// 删除
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostReceivablesDel(ForeignReceivablesDelDto dto)
+        {
+            try
+            {
+                Result ffrData = await _ForForeignReceivablesRep.PostReceivablesDel(dto);
                 if (ffrData.Code != 0)
                 {
                     return Ok(JsonView(false, ffrData.Msg));

+ 303 - 4
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -49,6 +49,8 @@ namespace OASystem.API.Controllers
         private readonly InvitationOfficialActivitiesRepository _InvitationOfficialActivitiesRep;
         private readonly DelegationEnDataRepository _delegationEnDataRep;
         private readonly DelegationVisaRepository _delegationVisaRep;
+        private readonly VisaPriceRepository _visaPriceRep;
+        private readonly CarTouristGuideGroundRepository _carTouristGuideGroundRep;
         private readonly MessageRepository _message;
         private readonly SqlSugarClient _sqlSugar;
         #region 成本相关
@@ -65,6 +67,7 @@ namespace OASystem.API.Controllers
         public GroupsController(IMapper mapper, SqlSugarClient sqlSugar, GrpScheduleRepository grpScheduleRep, DelegationInfoRepository groupRepository,
             TaskAssignmentRepository taskAssignmentRep, AirTicketResRepository airTicketResRep, DecreasePaymentsRepository decreasePaymentsRep,
             InvitationOfficialActivitiesRepository InvitationOfficialActivitiesRep, DelegationEnDataRepository delegationEnDataRep, EnterExitCostRepository enterExitCostRep
+            , DelegationVisaRepository delegationVisaRep, MessageRepository message,VisaPriceRepository visaPriceRep,CarTouristGuideGroundRepository carTouristGuideGroundRep)
             , DelegationVisaRepository delegationVisaRep, MessageRepository message, CheckBoxsRepository checkBoxs, GroupCostRepository GroupCostRepository, CostTypeHotelNumberRepository CostTypeHotelNumberRepository,
             GroupCostParameterRepository GroupCostParameterRepository)
         {
@@ -86,6 +89,8 @@ namespace OASystem.API.Controllers
             _enterExitCostRep = enterExitCostRep;
             _delegationVisaRep = delegationVisaRep;
             _message = message;
+            _visaPriceRep= visaPriceRep;
+            _carTouristGuideGroundRep= carTouristGuideGroundRep;
             _checkBoxs = checkBoxs;
             _GroupCostRepository = GroupCostRepository;
             _CostTypeHotelNumberRepository = CostTypeHotelNumberRepository;
@@ -377,7 +382,7 @@ namespace OASystem.API.Controllers
 
             GroupStepForDelegation.CreateWorkStep(dto.GroupId); //创建管控流程
 
-            return Ok(JsonView(groupData.Data));
+            return Ok(JsonView(true,"操作成功!",groupData.Data));
         }
 
         
@@ -638,10 +643,13 @@ namespace OASystem.API.Controllers
                     if (updCount > 0 && dto.publishCode == 1) {
 
                         _delegationVisaRep.ChangeDataBase(DBEnum.OA2014DB); //切换到新OA后删除
-                        GroupInfoDto grpDto = new GroupInfoDto() { Id = dto.diId };
-                        var groupData = await _groupRepository.GetGroupInfo(grpDto);
+                        
+                        string sqlDelegation = string.Format(@" Select * From DelegationInfo With(Nolock) Where Id = {0} ", dto.diId);
+                        OA2021_DelegationInfo groupData = _sqlSugar.SqlQueryable<OA2021_DelegationInfo>(sqlDelegation).First();
+                        //GroupInfoDto grpDto = new GroupInfoDto() { Id = dto.diId };
+                        //var groupData = await _groupRepository.GetGroupInfo(grpDto);
                         _delegationVisaRep.ChangeDataBase(DBEnum.OA2023DB); //切换到新OA后删除
-                        if (groupData.Code != 0)
+                        if (groupData == null)
                         {
                             _delegationVisaRep.RollbackTran();
                         }
@@ -2766,6 +2774,47 @@ namespace OASystem.API.Controllers
 
         }
 
+        /// <summary>
+        /// 团组模块 - 出入境国家费用标准 根据城市查询
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostNationalTravelFeeInfoByCountryAndCity(NationalTravelFeeByCountryAndCityDto dto)
+        {
+            if (dto == null) return Ok(JsonView(false, "请传入参数!"));
+
+            int portId = dto.PortType;
+            if (portId != 1 && portId != 2 && portId != 3) return Ok(JsonView(false, "请输入正确的端口号!\r\n请求端口分类1 Web 2 Android 3 IOS"));
+
+            string whereSql = string.Empty;
+            if (!string.IsNullOrEmpty(dto.Country))
+            {
+                whereSql = string.Format(@"And Country = '{0}' ", dto.Country);
+            }
+
+            if (!string.IsNullOrEmpty(dto.City))
+            {
+                whereSql = string.Format(@"And City = '{0}' ", dto.City);
+            }
+
+            
+            string sql = string.Format(@"Select gntf.Country,gntf.City,gntf.Currency,ssd.Name as CurrencyCode, 
+	                                                ssd.Remark as CurrencyName,gntf.RoomCost,gntf.FoodCost,gntf.PublicCost,
+	                                                gntf.LastUpdateUserId,su.CnName as LastUpdateUserName,gntf.LastUpdateTime 
+                                             From Grp_NationalTravelFee gntf
+                                             Left Join Sys_SetData ssd On ssd.STid = 66 And gntf.Currency = ssd.Id
+                                             Left Join Sys_Users su On gntf.LastUpdateUserId = su.Id 
+                                             Where gntf.Isdel = 0 {0} ", whereSql);
+
+            var nationalTravelFeeData = await _groupRepository._sqlSugar.SqlQueryable<NationalTravelFeeInfoByCountryAndCityView>(sql).FirstAsync();
+
+
+
+            return Ok(JsonView(true, "查询成功!", nationalTravelFeeData));
+
+        }
+
         /// <summary>
         /// 团组模块 - 出入境国家费用标准 - Add Or Update
         /// </summary>
@@ -2825,6 +2874,197 @@ namespace OASystem.API.Controllers
                 return Ok(JsonView(false, ex.Message));
             }
         }
+
+        #endregion
+
+        #region 签证费用录入
+
+        /// <summary>
+        /// 根据diid查询签证费用列表
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> QueryVisaByDiId(VisaPriceDto dto)
+        {
+            try
+            {
+                Result groupData = await _visaPriceRep.PostVisaByDiId(dto);
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+                return Ok(JsonView(true, groupData.Msg, groupData.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+        /// <summary>
+        /// 根据签证费用Id查询单条数据及c表数据
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> QueryVisaById(PostVisaByIdDto dto)
+        {
+            try
+            {
+                Result groupData = await _visaPriceRep.PostVisaById(dto);
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+                return Ok(JsonView(true, groupData.Msg, groupData.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+        /// <summary>
+        /// 签证费用删除
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> DelVisaPrice(DelBaseDto dto)
+        {
+            try
+            {
+                var res = await _visaPriceRep.SoftDeleteByIdAsync<Grp_VisaInfo>(dto.Id.ToString(), dto.DeleteUserId);
+                if (!res)
+                {
+                    return Ok(JsonView(false, "删除失败"));
+                }
+                var resultC = await _sqlSugar.Updateable<Grp_CreditCardPayment>().Where(a => a.CId == dto.Id && a.IsDel == 0 && a.CTable == 80).SetColumns(a => new Grp_CreditCardPayment()
+                {
+                    IsDel = 1,
+                    DeleteUserId = dto.DeleteUserId,
+                    DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+                }).ExecuteCommandAsync();
+                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> VisaPriceAddSelect()
+        {
+            try
+            {
+                //支付方式
+                List<Sys_SetData> Payment = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 14 && a.IsDel == 0).ToList();
+                List<SetDataInfoView> _Payment = _mapper.Map<List<SetDataInfoView>>(Payment);
+
+                //币种
+                List<Sys_SetData> CurrencyList = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 66 && a.IsDel == 0).ToList();
+                List<SetDataInfoView> _CurrencyList = _mapper.Map<List<SetDataInfoView>>(CurrencyList);
+
+                //支付方式
+                List<Sys_SetData> PassengerType = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 69 && a.IsDel == 0).ToList();
+                List<SetDataInfoView> _PassengerType = _mapper.Map<List<SetDataInfoView>>(PassengerType);
+
+                //卡类型
+                List<Sys_SetData> BankCard = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 15 && a.IsDel == 0).ToList();
+                List<SetDataInfoView> _BankCard = _mapper.Map<List<SetDataInfoView>>(BankCard);
+
+                var data = new
+                {
+                    Payment = _Payment,
+                    CurrencyList = _CurrencyList,
+                    PassengerType = _PassengerType,
+                    BankCard = _BankCard
+                };
+                return Ok(JsonView(true, "查询成功!",data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
+
+        /// <summary>
+        /// 签证费用录入操作(Status:1.新增,2.修改)
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> OpVisaPrice(OpVisaPriceDto dto)
+        {
+            try
+            {
+                Result groupData = await _visaPriceRep.OpVisaPrice(dto);
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+                return Ok(JsonView(true, groupData.Msg, groupData.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+        #endregion
+
+        #region op费用录入
+        /// <summary>
+        /// 根据diid查询op费用列表
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> QueryCarTouristGuideGroundByDiId(CarTouristGuideGroundDto dto)
+        {
+            try
+            {
+                Result groupData = await _carTouristGuideGroundRep.QueryCarTouristGuideGroundByDiId(dto);
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+                return Ok(JsonView(true, groupData.Msg, groupData.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+        /// <summary>
+        /// 根据op费用Id查询单条数据及c表数据
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> QueryCarTouristGuideGroundById(CarTouristGuideGroundIdDto dto)
+        {
+            try
+            {
+                Grp_CarTouristGuideGroundReservations groupData = await _sqlSugar.Queryable<Grp_CarTouristGuideGroundReservations>().FirstAsync(a=>a.Id==dto.Id && a.IsDel==0);
+                return Ok(JsonView(true, "查询成功!", groupData));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+            }
+        }
         #endregion
 
         #region 团组成本
@@ -2901,7 +3141,66 @@ namespace OASystem.API.Controllers
 
             return Ok(jw);
         }
+        /// <summary>
+        /// op费用删除
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> DelCarTouristGuideGround(DelBaseDto dto)
+        {
+            try
+            {
+                var res = await _carTouristGuideGroundRep.SoftDeleteByIdAsync<Grp_CarTouristGuideGroundReservations>(dto.Id.ToString(), dto.DeleteUserId);
+                if (!res)
+                {
+                    return Ok(JsonView(false, "删除失败"));
+                }
+                var result = await _sqlSugar.Updateable<Grp_CarTouristGuideGroundReservationsContent>().Where(a => a.CTGGRId == dto.Id && a.IsDel == 0).SetColumns(a => new Grp_CarTouristGuideGroundReservationsContent()
+                {
+                    IsDel = 1,
+                    DeleteUserId = dto.DeleteUserId,
+                    DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+                }).ExecuteCommandAsync();
+                var resultC = await _sqlSugar.Updateable<Grp_CreditCardPayment>().Where(a => a.CId == dto.Id && a.IsDel == 0 && a.CTable==79).SetColumns(a => new Grp_CreditCardPayment()
+                {
+                    IsDel = 1,
+                    DeleteUserId = dto.DeleteUserId,
+                    DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+                }).ExecuteCommandAsync();
+                return Ok(JsonView(true, "删除成功!"));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
 
+        /// <summary>
+        /// op费用录入操作(Status:1.新增,2.修改)
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> OpCarTouristGuideGround(OpCarTouristGuideGroundDto dto)
+        {
+            try
+            {
+                Result groupData = await _carTouristGuideGroundRep.OpCarTouristGuideGround(dto);
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+                return Ok(JsonView(true, groupData.Msg, groupData.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
 
         #endregion
     }

+ 80 - 39
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -6,6 +6,7 @@ using OASystem.Domain.Entities.PersonnelModule;
 using OASystem.Domain.ViewModels.PersonnelModule;
 using OASystem.Domain.ViewModels.QiYeWeChat;
 using OASystem.Infrastructure.Repositories.PersonnelModule;
+using System.Collections.Generic;
 using System.Data;
 using System.Diagnostics;
 using System.Globalization;
@@ -45,7 +46,6 @@ namespace OASystem.API.Controllers
 
         #region 工资表单
 
-
         /// <summary>
         /// 工资 月列表
         /// </summary>
@@ -110,67 +110,85 @@ namespace OASystem.API.Controllers
             if (!startDtIsValid) return Ok(JsonView(false, "开始日期格式错误!正确时间格式:yyyy-MM-dd  "));
             if (!endDtIsValid) return Ok(JsonView(false, "结束格式错误!正确时间格式:yyyy-MM-dd  "));
 
-            
-
-            int res = -1;
-
             #region 处理数据
-            Pm_WageIssueWorkingDay pm_WageIssueWorkingDay = new Pm_WageIssueWorkingDay();
-            pm_WageIssueWorkingDay = _mapper.Map<Pm_WageIssueWorkingDay>(dto);
+            Pm_WageIssueWorkingDay pm_WageIssueWorkingDay1 = new Pm_WageIssueWorkingDay();
+            pm_WageIssueWorkingDay1 = _mapper.Map<Pm_WageIssueWorkingDay>(dto);
             List<Sys_Calendar> sys_Calendars = new List<Sys_Calendar>();
             sys_Calendars = _mapper.Map<List<Sys_Calendar>>(dto.CalendarInfos);
-            pm_WageIssueWorkingDay.Workdays = sys_Calendars.Where(it => it.IsWorkDays == true).ToList().Count();
+            pm_WageIssueWorkingDay1.Workdays = sys_Calendars.Where(it => it.IsWorkDay == true).ToList().Count();
             foreach (var item in sys_Calendars)
             {
-                item.Remark = pm_WageIssueWorkingDay.Remark;
-                item.CreateUserId = pm_WageIssueWorkingDay.CreateUserId;
-                item.CreateTime = pm_WageIssueWorkingDay.CreateTime;
+                item.Remark = pm_WageIssueWorkingDay1.Remark;
+                item.CreateUserId = pm_WageIssueWorkingDay1.CreateUserId;
+                item.CreateTime = pm_WageIssueWorkingDay1.CreateTime;
             }
 
             #endregion
 
             var _sqlSugar = _wageSheetRep._sqlSugar;
-            if (dto.Status == 1)
+            _sqlSugar.BeginTran();
+            
+            try
             {
-                string sql = string.Format("Select * From  Pm_WageIssueWorkingDay Where IsDel = 0 and YearMonth='{0}'",dto.YearMonth);
+                //月份表是否存在
+                Pm_WageIssueWorkingDay pm_WageIssueWorkingDay = new Pm_WageIssueWorkingDay()
+                {
+                    YearMonth = dto.YearMonth,
+                    StartDate = dto.StartDate,
+                    EndDate = dto.EndDate,
+                    Workdays = dto.CalendarInfos.Where(it => it.IsWorkDay == true).ToList().Count()
+                };
+
+                string sql = string.Format("Select * From Pm_WageIssueWorkingDay Where Isdel = 0 And YearMonth='{0}'", dto.YearMonth);
+                var workdsys = await _sqlSugar.SqlQueryable<Pm_WageIssueWorkingDay>(sql).FirstAsync();
 
-                var data = await _sqlSugar.SqlQueryable<WageSheetMonthView>(sql).FirstAsync();
-                if (data != null)
+                if (workdsys == null) //添加
                 {
-                    return Ok(JsonView(false, dto.YearMonth + "日期数据已存在,请前往修改!"));
-                }
+                    pm_WageIssueWorkingDay.CreateUserId = dto.UserId;
+                    pm_WageIssueWorkingDay.IsDel = 0;
 
-                _sqlSugar.BeginTran();
-                int add1 = await _sqlSugar.Insertable< Pm_WageIssueWorkingDay>(pm_WageIssueWorkingDay).ExecuteCommandAsync();
-                if (add1 > 0) res = 0;
-                int add2 = await _sqlSugar.Insertable<Sys_Calendar>(sys_Calendars).ExecuteCommandAsync();
-                if (add2 > 0) res = 0;
-                _sqlSugar.CommitTran();
-            }
-            else if (dto.Status == 1)
-            {
-                _sqlSugar.BeginTran();
+                    int addId = await _sqlSugar.Insertable(pm_WageIssueWorkingDay).ExecuteReturnIdentityAsync();
+                }
+                else //更新
+                {
+                    int updCount = await _sqlSugar.Updateable(pm_WageIssueWorkingDay)
+                        .IgnoreColumns(z => new { z.CreateUserId, z.CreateTime, z.DeleteUserId, z.DeleteTime, z.IsDel })
+                        .WhereColumns(it => it.Id)
+                        .ExecuteCommandAsync();
+                }
 
+                List<Sys_Calendar> sys_Calendars_add = new List<Sys_Calendar>();
+                List<Sys_Calendar> sys_Calendars_update = new List<Sys_Calendar>();
+                sys_Calendars_add = sys_Calendars.Where(it => it.Id == 0).ToList();
+                sys_Calendars_update = sys_Calendars.Where(it => it.Id != 0).ToList();
 
-                int upd1 = await _sqlSugar.Updateable< Pm_WageIssueWorkingDay >(pm_WageIssueWorkingDay)
-                    .UpdateColumns(it => new { it.YearMonth,it.StartDate,it.EndDate,it.Workdays,it.DeleteTime })
-                    .ExecuteCommandAsync();
-                if (upd1 > 0) res = 0;
-                int upd2 = await _sqlSugar.Updateable<Sys_Calendar>(sys_Calendars)
-                    .UpdateColumns(it => new { it.Dt, it.IsWorkDays, it.IsHoliDay, it.HoliDayName })
+                int add1 = 0;
+                int upd = 0;
+                if (sys_Calendars_add.Count > 0)
+                {
+                    await _sqlSugar.Insertable(sys_Calendars_add).ExecuteReturnIdentityAsync();
+                }
+                if (sys_Calendars_update.Count > 0)
+                {
+                    await _sqlSugar.Updateable<Sys_Calendar>(sys_Calendars)
+                    .UpdateColumns(it => new { it.Dt, it.IsWorkDay, it.IsHoliDay, it.HoliName })
+                    .WhereColumns(it => it.Id)
                     .ExecuteCommandAsync();
-                if (upd2 > 0) res = 0;
+                }
 
                 _sqlSugar.CommitTran();
-            }
-            else return Ok(JsonView(false, "Status 请传入正确的状态码 1 添加 2 修改"));
 
-            if (res == 0) return Ok(JsonView(true, "操作成功!"));
 
+                return Ok(JsonView(true, "操作成功!"));
+            }
+            catch (Exception ex)
+            {
+                _sqlSugar.RollbackTran();
+                return Ok(JsonView(false, ex.Message));
+            }
 
-            return Ok(JsonView(false, "操作失败!"));
-        }
 
+        }
 
         /// <summary>
         /// 工资表单 基础数据源
@@ -789,6 +807,29 @@ namespace OASystem.API.Controllers
             return Ok(JsonView(true, "操作成功!"));
         }
 
+        /// <summary>
+        /// 打卡记录测试
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> Test(string startDt,string endDt) 
+        {
+            UserIdListView userIdListView = await _qiYeWeChatApiService.GetUserIdListAsync();
+            if (userIdListView.errcode != 0)
+            {
+                _result.Msg = "【企业微信】【打卡】【获取员工ID】【Msg】" + userIdListView.errmsg;
+                return Ok(JsonView(false, _result.Msg));
+            }
+
+            List<string> qyWhchatIdList = new List<string>();
+            qyWhchatIdList = userIdListView.dept_user.Select(it => it.userid).ToList();
+
+            var data = await _qiYeWeChatApiService.GetCheckinDataAsync(qyWhchatIdList,2,Convert.ToDateTime(startDt), Convert.ToDateTime(endDt));
+            return Ok(JsonView(true, "操作成功!", data.checkindata));
+        }
+
+
         #endregion
 
     }

+ 1 - 1
OASystem/OASystem.Api/Controllers/SystemController.cs

@@ -74,7 +74,7 @@ namespace OASystem.API.Controllers
                 return Ok(JsonView(false, msgData.Msg));
             }
 
-            return Ok(JsonView(true, msgData.Data));
+            return Ok(JsonView(true,"成功", msgData.Data));
         }
 
         /// <summary>

+ 274 - 11
OASystem/OASystem.Api/OAMethodLib/PayrollComputation.cs

@@ -1,5 +1,6 @@
 using Google.Protobuf.WellKnownTypes;
 using NPOI.HPSF;
+using NPOI.OpenXmlFormats.Dml.Diagram;
 using NPOI.OpenXmlFormats.Spreadsheet;
 using NPOI.SS.Formula.Functions;
 using NPOI.Util;
@@ -12,6 +13,7 @@ using OASystem.Infrastructure.Repositories.Groups;
 using System;
 using System.Collections.Generic;
 using System.Diagnostics.Eventing.Reader;
+using System.Drawing;
 using System.Linq.Expressions;
 using TencentCloud.Ocr.V20181119.Models;
 
@@ -75,8 +77,26 @@ namespace OASystem.API.OAMethodLib
                 _result.Msg = "【企业微信】【打卡】【获取时间段内所有日打卡】【Msg】" + checkInDayDataView.errmsg;
                 return _result;
             }
+
+            //获取所有打卡记录 外出
+            CheckInDataView checkInDataView = new CheckInDataView();
+            checkInDataView = await _qiYeWeChatApiService.GetCheckinDataAsync(qyWhchatIdList, 3,startDt, endDt);
+            if (checkInDataView.errcode != 0)
+            {
+                _result.Msg = "【企业微信】【打卡】【获取时间段内所有日打卡记录】【Msg】" + checkInDataView.errmsg;
+                return _result;
+            }
+
+            //查询工作日
+            List<Sys_Calendar> sys_Calendars = new List<Sys_Calendar>();
+            string sys_sql = string.Format("Select * From Sys_Calendar Where Isdel = 0 And Dt between '{0}' And '{1}'", 
+                startDt.ToString("yyyy-MM-dd"), endDt.ToString("yyyy-MM-dd"));
+            sys_Calendars = await _usersRep._sqlSugar.SqlQueryable<Sys_Calendar>(sys_sql).ToListAsync();
+
             //筛选出工作日日报
-            List<Root> workday_userRoots = checkInDayDataView.datas.Where(it => it.base_info.day_type == 0 && it.base_info.record_type == 1).ToList(); //工作日日报
+            List<Root> workday_userRoots = checkInDayDataView.datas.Where(it => it.base_info.day_type == 0 && it.base_info.record_type == 1).ToList(); 
+
+            //工作日日报
             workday_userRoots = workday_userRoots.OrderBy(it => it.base_info.date).ToList();
 
             //获取 请假类型 Sp_Detail.template_id
@@ -93,7 +113,7 @@ namespace OASystem.API.OAMethodLib
                 foreach (var pm_wsInfo in pm_WageSheetDattaSources)
                 {
                     string itemName = userNames.Where(it => it.Id == pm_wsInfo.UserId).FirstOrDefault().CnName;
-
+                    
 
                     //补贴 金额
                     decimal meal_subsidy = 0.00M;  // 午餐(午餐10元/天)  补贴 * 计算方式:单日上午请假时长(小时)大于或者等于三小时 没有餐补
@@ -135,6 +155,7 @@ namespace OASystem.API.OAMethodLib
                     List<Ex_Items> ex_Items = new List<Ex_Items>();//假勤 And 打卡备注集合
                     Ex_Items ex_Items_dk = new Ex_Items() { Type = "打卡" };    //打卡
                     Ex_Items ex_Items_jq = new Ex_Items() { Type = "假勤" };   //假勤
+                    Ex_Items ex_Items_cc = new Ex_Items() { Type = "出差" };   //出差
                     #endregion
 
 
@@ -152,7 +173,6 @@ namespace OASystem.API.OAMethodLib
                     //userRoots = userRoots.Distinct().ToList();
                     userRoots = userRoots.OrderBy(it => it.base_info.date).ToList();
 
-
                     int dk_work_days = userRoots.Count;   //应出勤天数 
 
                     if (dk_work_days > work_days)
@@ -176,12 +196,23 @@ namespace OASystem.API.OAMethodLib
 
                         int user_probationary_bk_num = 0; 
                                                           
-                                                          
                         decimal user_probationary_bk_decimal = pm_wsInfo.Floats; //绩效工资为0 则为试用员工
 
+                        //处理外出打卡记录
+                        List<CheckInDataInfo> checkInData1 = new List<CheckInDataInfo>();
+                        checkInData1 = checkInDataView.checkindata;
+                        List<CheckInDataInfo> checkInDatas = new List<CheckInDataInfo>();
+                        checkInDatas = checkInData1.Where(it => it.userid == acctid).ToList();
+                        //找出外出的打卡记录
+                        List<CheckInDataInfo> checkInData2 = new List<CheckInDataInfo>();
+                        checkInData2 = checkInDatas.Where(it => it.exception_type.Equals("未打卡")).ToList();
+                        
+
+
                         #region 迟到 早退 旷工
 
                         int user_cd_zt_num = 0; //早退/迟到 次数 10分钟内 2次以内不记处罚 三次及以上50一次
+
                         foreach (var root in userRoots)
                         {
                             List<Holiday_infos> holiday_Infos = root.holiday_infos; //当天假勤信息
@@ -413,10 +444,14 @@ namespace OASystem.API.OAMethodLib
                         #region 假勤/补卡次数 审批
 
                         int leaveNum = 0; //请假次数
-                        int reissuecardNum = 0; //补卡次数\
+                        int reissuecardNum = 0; //补卡次数
+                        int evectionNum = 0; //出差次数
                         //类型:1 - 请假;2 - 补卡;3 - 出差;4 - 外出;100 - 外勤
                         leaveNum = acc_sp_items.Where(it => it.type == 1).ToList().Count();
                         reissuecardNum = acc_sp_items.Where(it => it.type == 2).ToList().Count();
+                        List<Sp_items> acc_sp_items_evection = new List<Sp_items>();
+                        acc_sp_items_evection = acc_sp_items.Where(it => it.type == 3).ToList();
+                        evectionNum = acc_sp_items_evection.Count();
 
                         //请假审批
                         if (leaveNum > 0)
@@ -480,8 +515,18 @@ namespace OASystem.API.OAMethodLib
                                             unit = "天";
                                             startTime = date_Range.new_begin_dt.ToString("yyyy-MM-dd") + " 09:00";
                                             endTime = date_Range.new_begin_dt.ToString("yyyy-MM-dd") + " 18:00";
-                                            startTime1 = "09:00:00";
-                                            endTime1 = "18:00:00";
+                                            if (new_duration == 1)
+                                            {
+                                                startTime1 = "09:00:00";
+                                                endTime1 = "18:00:00";
+                                            }
+                                            else
+                                            {
+                                                startTime1 = date_Range.new_begin_dt.ToString("HH:mm:ss");
+                                                endTime1 = date_Range.new_end_dt.ToString("HH:mm:ss");
+                                            }
+
+                                            
                                         }
                                         else if (date_Range.type == "hour")
                                         {
@@ -629,6 +674,87 @@ namespace OASystem.API.OAMethodLib
                                     }
                                 }
                             }
+
+                            //外出审批 已通过的数据 且 外出未打卡
+                            List<Sp_Detail> sp_goout_details = new List<Sp_Detail>();
+                            sp_goout_details = await _qiYeWeChatApiService.GetApprovalDetailsAsync(startDt, endDt, acctid, 2, 4); //时间段内所有 已同意的 外出 审批数据
+                            if (sp_goout_details.Count > 0)
+                            {
+                                //找出外出的具体日期
+                                List<string> goOutDts = new List<string>();
+                                foreach (var goOutItem in sp_goout_details)
+                                {
+                                    Apply_data? apply_data = goOutItem.apply_data;
+                                    if (apply_data != null)
+                                    {
+                                        List<ContentsItem> contents = apply_data.contents;
+                                        ContentsItem content_Vacation = contents.Where(it => it.control == "Attendance").FirstOrDefault();  //请假类型 
+                                        ContentsItem content_Textarea = contents.Where(it => it.control == "Textarea").FirstOrDefault();    //多行文本 
+
+                                        if (content_Vacation != null)
+                                        {
+                                            var attendance = content_Vacation.value.attendance;
+
+                                            DateTime goOutDt = attendance.date_range.new_begin_dt;
+                                            DateTime goOutDtJudge = Convert.ToDateTime(goOutDt.ToString("yyyy-MM-dd"));
+                                            //筛选 不在工作日内的假勤申请
+                                            if (startDt >= goOutDtJudge || goOutDtJudge > endDt)
+                                            {
+                                                continue;
+                                            }
+                                            goOutDts.Add(goOutDt.ToString("yyyy-MM-dd"));
+                                        }
+                                    }
+                                }
+
+                                //处理日期范围内的数据
+                                List<CheckInDataInfo> filtratePrefix_checkInData = new List<CheckInDataInfo>();
+                                if (goOutDts.Count > 0)
+                                {
+                                    foreach (var goOutDtItem in goOutDts)
+                                    {
+                                        List<CheckInDataInfo> filtrate_checkInData = new List<CheckInDataInfo>();
+                                        filtrate_checkInData = checkInData2.Where(it => it.checkin_time_dt.ToString("yyyy-MM-dd").Equals(goOutDtItem)).ToList();
+                                        if (filtrate_checkInData.Count > 0)
+                                        {
+                                            filtratePrefix_checkInData.AddRange(filtrate_checkInData);
+                                        }
+                                    }
+                                }
+
+
+                                //打卡记录里抓取的未打卡数据
+                                foreach (var item in filtratePrefix_checkInData)
+                                {
+                                    decimal bukaPrice = 0.00M;
+
+                                    if (user_probationary_bk_decimal == 0) //计算试用员工补卡次数
+                                    {
+                                        if (bukaNum <= 2) bukaPrice = 0.00M;
+                                        else if (bukaNum <= 4 && bukaNum > 2) bukaPrice = 10.00M;
+                                        else bukaPrice = 50.00M;
+
+                                    }
+                                    else   //计算正式员工补卡次数
+                                    {
+                                        if (bukaNum <= 2) bukaPrice = 10.00M;
+                                        else bukaPrice = 50.00M;
+                                    }
+
+                                    Ex_Item ex_reissueCard = new Ex_Item()
+                                    {
+                                        SubTypeId = 7,
+                                        SubType = "打卡补卡",
+                                        StartTimeDt = Convert.ToDateTime(item.checkin_time_dt.ToString("yyyy-MM-dd HH:mm:ss")),  //未打卡时间
+                                        Deduction = bukaPrice,
+                                        Reason = "[打卡记录]抓取到的未打卡数据!",
+                                        Unit = string.Empty
+                                    };
+                                    unprinted_deduction += bukaPrice;
+                                    ex_reissuecard_Items.Add(ex_reissueCard);
+                                    bukaNum++;
+                                }
+                            }
                         }
 
                         if (ex_reissuecard_Items.Count > 0)
@@ -638,6 +764,143 @@ namespace OASystem.API.OAMethodLib
                             ex_Items.Add(ex_Items_dk);
                         }
 
+                        //出差申请
+                        if (evectionNum > 0)
+                        {
+                            List<Sp_Detail> sp_leave_details = new List<Sp_Detail>();
+                            sp_leave_details = await _qiYeWeChatApiService.GetApprovalDetailsAsync(startDt, endDt, acctid, 2, 3); //时间段内所有 已同意的 出差 审批数据
+                            if (sp_leave_details.Count <= 0)
+                            {
+                                _result.Msg += startDt + " - " + endDt + "  " + itemName + "  请假 审批数据获取未获取到!\r\n";
+                                //continue;
+                            }
+                            List<Ex_Item> cc_ex_ItemInfos = new List<Ex_Item>();
+
+                            foreach (Sp_Detail sp_item in sp_leave_details)
+                            {
+                                Apply_data? apply_data = sp_item.apply_data;
+                                if (apply_data != null)
+                                {
+                                    List<ContentsItem> contents = apply_data.contents;
+                                    ContentsItem content_Vacation = contents.Where(it => it.control == "Attendance").FirstOrDefault();  //出差类型 
+                                    ContentsItem content_Textarea = contents.Where(it => it.control == "Textarea").FirstOrDefault(); //多行文本 
+
+                                    if (content_Vacation != null)
+                                    {
+                                        //Vacation vacation = content_Vacation.value.vacation;
+                                        Attendance attendance = content_Vacation.value.attendance; //假勤组件
+                                        //Selector selector = vacation.selector;       //请假类型
+
+                                        //List<OptionsItem> optionsItems = selector.options; //key 请假类型 id
+                                        //List<TitleItem> value = optionsItems[0].value; // value 文本描述值
+
+                                        int leaveType = int.Parse("3");  //key 请假子类型 id
+                                        Date_range date_Range = attendance.date_range;
+
+                                        //筛选 不在工作日内的假勤申请
+                                        if (startDt >= date_Range.new_begin_dt || Convert.ToDateTime(date_Range.new_end_dt.ToString("yyyy-MM-dd")) > endDt)
+                                        {
+                                            continue;
+                                        }
+
+                                        string leave_starttime = date_Range.new_begin_dt.ToString("HH:mm");
+                                        string leave_endtime = date_Range.new_end_dt.ToString("HH:mm");
+
+                                        string typeName = string.Empty;
+                                        string unit = string.Empty;
+                                        int leaveTypeId = leaveType;
+                                        typeName = "出差";
+
+                                        string startTime = string.Empty;
+                                        string endTime = string.Empty;
+                                        string startTime1 = string.Empty;
+                                        string endTime1 = string.Empty;
+                                        //计算请假类型扣款金额
+                                        decimal new_duration = 0.00M;
+                                        if (date_Range.type == "halfday")
+                                        {
+                                            new_duration = Convert.ToDecimal(date_Range.new_duration) / 86400.00M;
+                                            unit = "天";
+                                            startTime = date_Range.new_begin_dt.ToString("yyyy-MM-dd") + " 09:00";
+                                            endTime = date_Range.new_begin_dt.ToString("yyyy-MM-dd") + " 18:00";
+                                            startTime1 = "09:00:00";
+                                            endTime1 = "18:00:00";
+                                        }
+                                        else if (date_Range.type == "hour")
+                                        {
+                                            new_duration = Convert.ToDecimal(date_Range.new_duration) / 3600.00M;
+                                            unit = "小时";
+                                            startTime = date_Range.new_begin_dt.ToString("yyyy-MM-dd HH:mm:ss");
+                                            endTime = date_Range.new_end_dt.ToString("yyyy-MM-dd HH:mm:ss");
+                                            startTime1 = date_Range.new_begin_dt.ToString("HH:mm:ss");
+                                            endTime1 = date_Range.new_end_dt.ToString("HH:mm:ss");
+                                        }
+
+                                        //出差扣款
+                                        decimal cckk = 0.00M;
+
+                                        int days = (int)(date_Range.new_end_dt - date_Range.new_begin_dt).TotalDays;
+                                        for (int i = 0; i <= days; i++)
+                                        {
+                                            DateTime thisDt = date_Range.new_begin_dt.AddDays(i);
+                                            if (thisDt > date_Range.new_end_dt)
+                                            {
+                                                continue;
+                                            }
+
+                                            Sys_Calendar sys_Calendar = new Sys_Calendar();
+                                            sys_Calendar = sys_Calendars.Where(it => it.Dt == thisDt.ToString("yyyy-MM-dd")).FirstOrDefault();
+                                            if (sys_Calendar != null) {
+                                                if (sys_Calendar.IsWorkDay)
+                                                {
+                                                    cckk += 10.00M;
+                                                }
+                                            }
+                                        }
+
+
+                                        meal_deduction += cckk;
+
+
+                                        Ex_Item ex_Item = new Ex_Item()
+                                        {
+                                            SubTypeId = leaveType,
+                                            SubType = typeName,
+                                            StartTimeDt = Convert.ToDateTime(date_Range.new_begin_dt.ToString("yyyy-MM-dd") + " " + startTime1),
+                                            EndTimeDt = Convert.ToDateTime(date_Range.new_end_dt.ToString("yyyy-MM-dd") + " " + endTime1),
+                                            Duration = new_duration,
+                                            Unit = unit,
+                                            Deduction = 0.00M,
+                                            //Reason = apply_data.reason,
+                                            Apply_time_dt = Convert.ToDateTime(sp_item.apply_time_dt.ToString("yyyy-MM-dd HH:mm:ss"))
+                                            //Approval_name = sp_item.approval_name,
+                                        };
+
+                                        cc_ex_ItemInfos.Add(ex_Item);
+
+                                    }
+                                }
+                            }
+
+                            if (cc_ex_ItemInfos.Count > 0)
+                            {
+                                //ex_Items_cc.Ex_ItemInfo = cc_ex_ItemInfos.OrderBy(it => it.StartTimeDt).ThenBy(it => it.Apply_time_dt).ToList();
+                                //ex_Items.Add(ex_Items_cc);
+                                List<Ex_Item> ex_jq_Items = new List<Ex_Item>();
+                                ex_jq_Items = (List<Ex_Item>)ex_Items_jq.Ex_ItemInfo;
+                                ex_jq_Items.AddRange(cc_ex_ItemInfos);
+                                ex_Items.Remove(ex_Items_jq);
+                                ex_Items.Add(
+                                    new Ex_Items()
+                                    {
+                                        Type = "假勤",
+                                        Ex_ItemInfo = ex_jq_Items.OrderBy(it => it.StartTimeDt).ThenBy(it => it.Apply_time_dt).ToList()
+                                    }
+                                    );
+                            }
+                        }
+
+
                         #endregion
 
                     }
@@ -693,10 +956,10 @@ namespace OASystem.API.OAMethodLib
                     pm_wsInfo.Ex_ItemsRemark = JsonConvert.SerializeObject(ex_Items);  //
                     pm_wsInfo.Mealsupplement = mealTotal;          //餐补
 
-                    pm_wsInfo.Should = salaryTotal;               //应发合计
-                    pm_wsInfo.TotalDeductions = eductionTotal;    //扣款合计
-                    pm_wsInfo.TotalRealHair = actualReleaseTotal - pm_wsInfo.WithholdingTax; //实发合计
-                    pm_wsInfo.AfterTax = actualReleaseTotal - pm_wsInfo.WithholdingTax; //税后工资
+                    pm_wsInfo.Should = ConvertToDecimal( salaryTotal);               //应发合计
+                    pm_wsInfo.TotalDeductions = ConvertToDecimal(eductionTotal);    //扣款合计
+                    pm_wsInfo.TotalRealHair = ConvertToDecimal(actualReleaseTotal - pm_wsInfo.WithholdingTax); //实发合计
+                    pm_wsInfo.AfterTax = ConvertToDecimal(actualReleaseTotal - pm_wsInfo.WithholdingTax); //税后工资
 
                     pm_wsInfo.LastUpdateUserId = userId;
                     pm_wsInfo.LastUpdateDt = DateTime.Now;

+ 6 - 9
OASystem/OASystem.Api/OAMethodLib/QiYeWeChatAPI/QiYeWeChatApiService.cs

@@ -608,16 +608,16 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI
             string url = string.Format("/cgi-bin/checkin/getcheckindata?access_token={0}", access_Token.access_token);
 
             DateTime centerDt = startDt.AddDays(30);
+
             long startTs = (long)(startDt - _1970).TotalSeconds;
             long centerTs = (long)(centerDt - _1970).TotalSeconds;
             long endTs = (long)(endDt - _1970).TotalSeconds;
-
             CheckInData_Request checkInData_Req = new CheckInData_Request()
             {
                 access_token = access_Token.access_token,
-                opencheckindatatype = opencheckindatatype, 
+                opencheckindatatype = opencheckindatatype,
                 useridlist = useridlist,
-                starttime = startTs, 
+                starttime = startTs,
                 endtime = centerTs
             };
 
@@ -629,11 +629,8 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI
             checkInDataView = System.Text.Json.JsonSerializer.Deserialize<CheckInDataView>(stringResponse,
                 new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase });
 
-            if (checkInDataView.errcode != 0)
-            {
-                return checkInDataView;
-            }
-            if (centerTs != endTs)
+
+            if (centerDt < endDt)
             {
                 checkInData_Req.starttime = centerTs;
                 checkInData_Req.endtime = endTs;
@@ -645,7 +642,7 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI
 
                 CheckInDataView checkInDataView1 = System.Text.Json.JsonSerializer.Deserialize<CheckInDataView>(stringResponse1,
                     new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase });
-                if (checkInDataView1.errcode !=  0)
+                if (checkInDataView1.errcode != 0)
                 {
                     return checkInDataView1;
                 }

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

@@ -118,6 +118,15 @@ namespace OASystem.Domain.AutoMappers
             CreateMap<NationalTravelFeeOperateDto, Grp_NationalTravelFee>();
             #endregion
 
+            #region 签证费用录入
+            CreateMap<OpVisaPriceDto, Grp_VisaInfo>();
+            CreateMap<OpVisaPriceDto, Grp_CreditCardPayment>();
+            #endregion
+
+
+            #region op费用
+            CreateMap<OpCarTouristGuideGroundDto, Grp_CarTouristGuideGroundReservations>();
+            #endregion
             #region 成本
             CreateMap<Grp_GroupCostDto, Grp_GroupCost>();
             CreateMap<Grp_CheckBoxsDto, Grp_CheckBoxs>();

+ 121 - 0
OASystem/OASystem.Domain/Dtos/Financial/ForForeignReceivablesNewDto.cs

@@ -0,0 +1,121 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Financial
+{
+    /// <summary>
+    /// 财务模块
+    /// 对外收款
+    /// </summary>
+    public class ForForeignReceivablesNewDto : PortDtoBase
+    {
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+    }
+
+    /// <summary>
+    /// 财务模块
+    /// 收款账单
+    /// Add or Update Info
+    /// </summary>
+    public class ForeignReceivablesSaveDto : PortDtoBase
+    {
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 用户Id
+        /// </summary>
+        public int UserId { get; set; }
+
+        /// <summary>
+        /// 财务模块
+        /// Add or Update Info
+        /// </summary>
+        public List<ForeignReceivablesInfoNew>? foreignReceivablesInfos { get; set; }
+    }
+
+    /// <summary>
+    /// 财务模块
+    /// Add or Update Info
+    /// </summary>
+    public class ForeignReceivablesInfoNew
+    {
+        /// <summary>
+        /// 主键编号
+        /// id=0 时添加
+        /// 其他值时 修改
+        /// </summary>
+        public int Id { get; set; }
+        /// <summary>
+        /// 费用名称
+        /// </summary>
+        public string? PriceName { get; set; }
+
+        /// <summary>
+        /// 费用
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 数量
+        /// </summary>
+        public int Count { get; set; }
+
+        /// <summary>
+        /// 单位
+        /// </summary>
+        public string? Unit { get; set; }
+
+        /// <summary>
+        /// 单项总和
+        /// </summary>
+        public decimal ItemSumPrice { get; set; }
+
+        /// <summary>
+        /// 汇率
+        /// </summary>
+        public decimal Rate { get; set; }
+
+        /// <summary>
+        /// 币种
+        /// </summary>
+        public int Currency { get; set; }
+
+        /// <summary>
+        /// 添加方式   
+        /// 0 - 账单页面添加   1 - 预算成本页面添加
+        /// </summary>
+        public int AddingWay { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string? Remark { get; set; }
+    }
+
+
+    /// <summary>
+    /// 财务模块
+    /// 收款账单
+    /// Del
+    /// </summary>
+    public class ForeignReceivablesDelDto : PortDtoBase
+    {
+        /// <summary>
+        /// 用户Id
+        /// </summary>
+        public int UserId { get; set; }
+
+
+        public int Id { get; set; }
+
+    }
+}

+ 103 - 0
OASystem/OASystem.Domain/Dtos/Groups/CarTouristGuideGroundDto.cs

@@ -0,0 +1,103 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Groups
+{
+    /// <summary>
+    /// Op费用根据diid查询列表
+    /// </summary>
+    public class CarTouristGuideGroundDto: DtoBase
+    {
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+    }
+    /// <summary>
+    /// 根据id查询单挑数据
+    /// </summary>
+    public class CarTouristGuideGroundIdDto
+    {
+        public int Id { get; set; }
+    }
+    /// <summary>
+    /// op费用新增、修改
+    /// </summary>
+    public class OpCarTouristGuideGroundDto
+    {
+        /// <summary>
+        /// 操作状态
+        /// 1 添加 
+        /// 2 修改 
+        /// </summary>
+        public int Status { get; set; }
+        /// <summary>
+        /// 编号
+        /// </summary>
+        public int Id { get; set; }
+        /// <summary>
+        /// 团组外键编号
+        /// </summary>
+        public int DiId { get; set; }
+        /// <summary>
+        /// 地接地区
+        /// </summary>
+        public string Area { get; set; }
+        /// <summary>
+        /// 服务公司
+        /// </summary>
+        public string ServiceCompany { get; set; }
+        /// <summary>
+        /// 服务导游
+        /// </summary>
+        public string ServiceGuide { get; set; }
+        /// <summary>
+        /// 导游地接联系电话
+        /// </summary>
+        public string ServiceTel { get; set; }
+        /// <summary>
+        /// Bus名称
+        /// </summary>
+        public string BusName { get; set; }
+        /// <summary>
+        /// Bus描述
+        /// </summary>
+        public string BusDescription { get; set; }
+        /// <summary>
+        /// 车公司联系电话
+        /// </summary>
+        public string BusTel { get; set; }
+
+        /// <summary>
+        /// 服务时间起
+        /// </summary>
+        public string ServiceStartTime { get; set; }
+        /// <summary>
+        /// 服务时间止
+        /// </summary>
+        public string ServiceEndTime { get; set; }
+        /// <summary>
+        /// 服务描述
+        /// </summary>
+        public string ServiceDescription { get; set; }
+        /// <summary>
+        /// 报价说明
+        /// </summary>
+        public string QuotedPriceExplanation { get; set; }
+        /// <summary>
+        /// 公转私转标识
+        /// </summary>
+        public int OrbitalPrivateTransfer { get; set; }
+        /// <summary>
+        /// 创建者Id
+        /// </summary>
+        public int CreateUserId { get; set; }
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+    }
+}

+ 18 - 0
OASystem/OASystem.Domain/Dtos/Groups/EnterExitCostDto.cs

@@ -234,6 +234,24 @@ namespace OASystem.Domain.Dtos.Groups
         public string City { get; set; }
     }
 
+    /// <summary>
+    /// 团组模块 - 出入境国家费用标准 
+    /// 根据国家城市查询Dto
+    /// </summary>
+    public class NationalTravelFeeByCountryAndCityDto : PortDtoBase
+    {
+        /// <summary>
+        /// 国家
+        /// </summary>
+        public string Country { get; set; }
+
+        /// <summary>
+        /// 城市
+        /// </summary>
+        public string City { get; set; }
+
+    }
+
     /// <summary>
     /// 出入境费用子项删除
     /// </summary>

+ 1 - 1
OASystem/OASystem.Domain/Dtos/Groups/GroupListDto.cs

@@ -220,7 +220,7 @@ namespace OASystem.Domain.Dtos.Groups
     /// <summary>
     /// 确认出团dto
     /// </summary>
-    public class ConfirmationGroupDto:DtoBase 
+    public class ConfirmationGroupDto:PortDtoBase 
     {
         /// <summary>
         /// 团组Id

+ 142 - 0
OASystem/OASystem.Domain/Dtos/Groups/VisaPriceDto.cs

@@ -0,0 +1,142 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Groups
+{
+    /// <summary>
+    /// 根据团组id查询签证费用列表
+    /// </summary>
+    public class VisaPriceDto
+    {
+        public int PageIndex { get; set; } = 1;
+        public int PageSize { get; set; } = 10;
+        public int PortType { get; set; } = 1;
+        public int DiID { get; set; }
+        /// <summary>
+        /// 客户名称
+        /// </summary>
+        public String VisaClient { get; set; }
+    }
+    public class PostVisaByIdDto 
+    {
+        public int Id { get; set; }
+    }
+    /// <summary>
+    /// 签证费用修改添加dto
+    /// </summary>
+    public class OpVisaPriceDto
+    {
+        /// <summary>
+        /// 操作状态
+        /// 1 添加 
+        /// 2 修改 
+        /// </summary>
+        public int Status { get; set; }
+        /// <summary>
+        /// 主键Id
+        /// </summary>
+        public int Id { get; set; }
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+        /// <summary>
+        /// 签证客户
+        /// </summary>
+        public string VisaClient { get; set; }
+        /// <summary>
+        /// 签证费用
+        /// </summary>
+        public decimal VisaPrice { get; set; }
+        /// <summary>
+        /// 币种
+        /// </summary>
+        public int VisaCurrency { get; set; }
+        /// <summary>
+        /// 是否第三方代办
+        /// </summary>
+        public int IsThird { get; set; }
+        /// <summary>
+        /// 签证人员类型
+        /// </summary>
+        public int PassengerType { get; set; }
+        /// <summary>
+        /// 办理签证人数
+        /// </summary>
+        public int VisaNumber { get; set; }
+        /// <summary>
+        /// 免签人数
+        /// </summary>
+        public int VisaFreeNumber { get; set; }
+
+        /// <summary>
+        /// 创建者Id
+        /// </summary>
+        public int CreateUserId { get; set; }
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+
+
+        //c表dto参数
+        /// <summary>
+        /// 支付方式
+        /// </summary>
+        public int PayDId { get; set; }
+        /// <summary>
+        /// 消费方式
+        /// </summary>
+        public string ConsumptionPatterns { get; set; }
+        /// <summary>
+        /// 消费日期
+        /// </summary>
+        public String ConsumptionDate { get; set; }
+        /// <summary>
+        /// 卡类型
+        /// </summary>
+        public int CTDId { get; set; }
+
+        /// <summary>
+        /// 公司银行卡号
+        /// </summary>
+        public string CompanyBankNo { get; set; }
+        /// <summary>
+        /// 对方开户行
+        /// </summary>
+        public string OtherBankName { get; set; }
+        /// <summary>
+        /// 对方银行账号
+        /// </summary>
+        public string OtherSideNo { get; set; }
+        /// <summary>
+        /// 对方姓名
+        /// </summary>
+        public string OtherSideName { get; set; }
+
+        /// <summary>
+        /// 银行卡号
+        /// </summary>
+        public string BankNo { get; set; }
+        /// <summary>
+        /// 持卡人姓名
+        /// </summary>
+        public string CardholderName { get; set; }
+        /// <summary>
+        /// 收款方
+        /// </summary>
+        public string Payee { get; set; }
+        /// <summary>
+        /// 费用标识
+        /// </summary>
+        public int OrbitalPrivateTransfer { get; set; }
+
+        /// <summary>
+        /// C表备注
+        /// </summary>
+        public string CRemark { get; set; }
+    }
+}

+ 8 - 1
OASystem/OASystem.Domain/Dtos/PersonnelModule/WageSheetMonthWorkdaysDto.cs

@@ -17,8 +17,15 @@ namespace OASystem.Domain.Dtos.PersonnelModule
     /// <summary>
     /// 添加 Or 修改
     /// </summary>
-    public class WageSheetMonthWorkdaysAddOrEditDto : OpBaseDto
+    public class WageSheetMonthWorkdaysAddOrEditDto 
     {
+        public int UserId { get; set; }
+
+        /// <summary>
+        /// 月份Id 
+        /// </summary>
+        public int Id { get; set; }
+
         /// <summary>
         /// 年月
         /// </summary>

+ 4 - 0
OASystem/OASystem.Domain/Dtos/Resource/LocalGuideDataDto.cs

@@ -139,6 +139,10 @@ namespace OASystem.Domain.Dtos.Resource
         /// 备注
         /// </summary>
         public string Remark { get; set; }
+        /// <summary>
+        /// 导游地接的类型:0公司1私人
+        /// </summary>
+        public int StaffType { get; set; }
     }
 
     /// <summary>

+ 4 - 1
OASystem/OASystem.Domain/Entities/EntityBase.cs

@@ -1,4 +1,6 @@
-namespace OASystem.Domain.Entities
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace OASystem.Domain.Entities
 {
     /// <summary>
     /// 实体基类
@@ -9,6 +11,7 @@
         /// 编号
         /// </summary>
         [SugarColumn(ColumnDescription = "主键", IsPrimaryKey = true, IsIdentity = true, IsNullable = false)]
+        //[DatabaseGenerated(DatabaseGeneratedOption.None)]
         public int Id { get; set; }
         /// <summary>
         /// 创建者Id

+ 102 - 0
OASystem/OASystem.Domain/Entities/Groups/Grp_CarTouristGuideGroundReservations.cs

@@ -0,0 +1,102 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.Groups
+{
+    /// <summary>
+    /// 车/导游地接预订费用表
+    /// </summary>
+    [SugarTable("Grp_CarTouristGuideGroundReservations")]
+    public class Grp_CarTouristGuideGroundReservations : EntityBase
+    {
+        /// <summary>
+        /// 团组外键编号
+        /// </summary>
+        [SugarColumn(IsNullable =true,ColumnDataType ="int")]
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 地接地区
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")]
+        public string Area { get; set; }
+
+        /// <summary>
+        /// 服务公司
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")]
+        public string ServiceCompany { get; set; }
+
+        /// <summary>
+        /// 服务导游
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(100)")]
+        public string ServiceGuide { get; set; }
+
+        /// <summary>
+        /// 导游地接联系电话
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(30)")]
+        public string ServiceTel { get; set; }
+
+        /// <summary>
+        /// Bus名称
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")]
+        public string BusName { get; set; }
+
+        /// <summary>
+        /// Bus描述
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
+        public string BusDescription { get; set; }
+
+        /// <summary>
+        /// 车公司联系电话
+        /// </summary>
+        /// 
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(30)")]
+        public string BusTel { get; set; }
+
+        /// <summary>
+        /// 服务时间起
+        /// </summary>
+        /// 
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(80)")]
+        public string ServiceStartTime { get; set; }
+        /// <summary>
+        /// 服务时间止
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(80)")]
+        public string ServiceEndTime { get; set; }
+        /// <summary>
+        /// 服务描述
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
+        public string ServiceDescription { get; set; }
+        /// <summary>
+        /// 服务报价
+        /// </summary>
+        /// 
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
+        public decimal ServiceQuotedPrice { get; set; }
+        /// <summary>
+        /// 币种(设置数据外键编号)
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int CId { get; set; }
+        /// <summary>
+        /// 报价说明
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
+        public string QuotedPriceExplanation { get; set; }
+        /// <summary>
+        /// 公转私转标识
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int OrbitalPrivateTransfer{get;set; }
+    }
+}

+ 46 - 0
OASystem/OASystem.Domain/Entities/Groups/Grp_CarTouristGuideGroundReservationsContent.cs

@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.Groups
+{
+    /// <summary>
+    /// 车/导游地接预订详细类
+    /// </summary>
+    public class Grp_CarTouristGuideGroundReservationsContent:EntityBase
+    {
+        /// <summary>
+        /// 团组外键编号
+        /// </summary>
+        [SugarColumn(IsNullable =true,ColumnDataType ="int")]
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 车/导游地接预订外键编号
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int CTGGRId { get; set; }
+        /// <summary>
+        /// 费用项目明细
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int SId { get; set; }
+        /// <summary>
+        /// 金额
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
+        public decimal Price { get; set; }
+        /// <summary>
+        /// 费用明细
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
+        public string PriceContent { get; set; }
+        /// <summary>
+        /// 币种
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int Currency { get; set; }
+    }
+}

+ 3 - 3
OASystem/OASystem.Domain/Entities/Groups/Grp_Ommission.cs

@@ -26,12 +26,12 @@ namespace OASystem.Domain.Entities.Groups
         /// <summary>
         /// 团组结束时间,即团组最后一天
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string GroupDate { get; set; }
         /// <summary>
         /// 团组级别
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string GroupLvl { get; set; }
         /// <summary>
         /// 提成明细
@@ -46,7 +46,7 @@ namespace OASystem.Domain.Entities.Groups
         /// <summary>
         /// 提成发放至工资的月份
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string WageYearMonth { get; set; }
         /// <summary>
         /// 造成损失标识

+ 54 - 0
OASystem/OASystem.Domain/Entities/Groups/Grp_VisaInfo.cs

@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.Groups
+{
+    [SugarTable("Grp_VisaInfo")]
+    public class Grp_VisaInfo:EntityBase
+    {
+
+        /// <summary>
+        /// 团组外键编号
+        /// </summary>
+        [SugarColumn(IsNullable =true,ColumnDataType ="int")]
+        public int DIId { get; set; }
+        /// <summary>
+        /// 签证客户
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")]
+        public string VisaClient { get; set; }
+        /// <summary>
+        /// 签证费用
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
+        public decimal VisaPrice { get; set; }
+        /// <summary>
+        /// 币种
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int VisaCurrency { get; set; }
+        /// <summary>
+        /// 是否第三方支付
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int IsThird { get; set; }
+        /// <summary>
+        /// 签证人员类型
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int PassengerType { get; set; }
+        /// <summary>
+        /// 办理签证人数
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int VisaNumber { get; set; }
+        /// <summary>
+        /// 免签人数
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int VisaFreeNumber { get; set; }
+    }
+}

+ 0 - 1
OASystem/OASystem.Domain/Entities/Resource/Res_CarGuides.cs

@@ -7,7 +7,6 @@ using System.Threading.Tasks;
 namespace OASystem.Domain.Entities.Resource
 {
     /// <summary>
-    /// 
     /// 团组成本 司兼导资料表
     /// </summary>
     [SugarTable("Res_CarGuides")]

+ 4 - 0
OASystem/OASystem.Domain/Entities/Resource/Res_LocalGuideData.cs

@@ -114,5 +114,9 @@ namespace OASystem.Domain.Entities.Resource
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(10)")]
         public string LocalAndChineseScore { get; set; }
+        /// <summary>
+        /// 导游地接的类型:0公司1私人
+        /// </summary>
+        public int StaffType { get; set; }
     }
 }

+ 3 - 3
OASystem/OASystem.Domain/Entities/System/Sys_Calendar.cs

@@ -19,10 +19,10 @@ namespace OASystem.Domain.Entities.System
         public string Dt { get; set; }
         /// <summary>
         /// 是否是工作日
-        ///  0 true 1 false
+        ///  true  false
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "bit")]
-        public bool IsWorkDays { get; set; }
+        public bool IsWorkDay { get; set; }
 
         /// <summary>
         /// 是否是节假日
@@ -34,6 +34,6 @@ namespace OASystem.Domain.Entities.System
         /// 节假日名称
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
-        public string HoliDayName { get; set; }
+        public string HoliName { get; set; }
     }
 }

+ 5 - 5
OASystem/OASystem.Domain/Entities/System/Sys_Users.cs

@@ -42,7 +42,7 @@ namespace OASystem.Domain.Entities.System
         /// 密码
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
-        public string Password { get; set; } = "123456"; //默认密码
+        public string Password { get; set; } 
         /// <summary>
         /// 性别0 男1 女  2 未设置
         /// </summary>
@@ -92,7 +92,7 @@ namespace OASystem.Domain.Entities.System
         /// 生日
         /// </summary> 
         [SugarColumn(IsNullable = true,ColumnDataType = "DateTime")]
-        public DateTime Birthday { get; set; }
+        public DateTime? Birthday { get; set; }
         /// <summary>
         /// 身份证号码
         /// </summary>
@@ -101,8 +101,8 @@ namespace OASystem.Domain.Entities.System
         /// <summary>
         /// 开始工作时
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
-        public DateTime StartWorkDate { get; set; }
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(20)")]
+        public string? StartWorkDate { get; set; }
         /// <summary>
         /// 毕业学校
         /// </summary>
@@ -122,7 +122,7 @@ namespace OASystem.Domain.Entities.System
         public int Education { get; set; }
         /// <summary>
         /// 学历类型
-        ///0 未设置 1 成教 2 统招
+        ///0 未设置 1 成教 2 统招 3 留学
         /// </summary>
         [SugarColumn(IsNullable = true,ColumnDataType ="int")]
         public int TheOrAdultEducation { get; set; }

+ 110 - 0
OASystem/OASystem.Domain/ViewModels/Financial/Fin_ForeignReceivablesView.cs

@@ -128,4 +128,114 @@ namespace OASystem.Domain.ViewModels.Financial
         /// </summary>
         public List<ProceedsReceivedView>? _ProceedsReceivedDatas { get; set; }
     }
+
+
+    #region 不关联已收账单
+
+    /// <summary>
+    /// 团组已收款项Info View
+    /// </summary>
+    public class ProceedsReceivedNewView
+    {
+        /// <summary>
+        /// 主键ID
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int Diid { get; set; }
+
+        /// <summary>
+        /// 费用名称
+        /// </summary>
+        public string? PriceName { get; set; }
+
+        /// <summary>
+        /// 费用
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 数量
+        /// </summary>
+        public int Count { get; set; }
+
+        /// <summary>
+        /// 单位
+        /// </summary>
+        public string? Unit { get; set; }
+
+        /// <summary>
+        /// 单项总和
+        /// </summary>
+        public decimal ItemSumPrice { get; set; }
+
+        /// <summary>
+        /// 付款方
+        /// </summary>
+        public string? To { get; set; }
+
+        /// <summary>
+        /// 付款方电话
+        /// </summary>
+        public string? ToTel { get; set; }
+
+        /// <summary>
+        /// 付款日期
+        /// </summary>
+        public string? PayDate { get; set; }
+
+        /// <summary>
+        /// 付款注意事项
+        /// </summary>
+        public string? Attention { get; set; }
+
+        /// <summary>
+        /// 汇率
+        /// </summary>
+        public decimal Rate { get; set; }
+
+        /// <summary>
+        /// 币种
+        /// </summary>
+        public int Currency { get; set; }
+
+        /// <summary>
+        /// 添加方式   
+        /// 0 - 账单页面添加   1 - 预算成本页面添加
+        /// </summary>
+        public int AddingWay { get; set; }
+
+        /// <summary>
+        /// 添加方式描述
+        /// </summary>
+        public string? AddingModeName
+        {
+            get
+            {
+
+                string str = "";
+                if (AddingWay == 0) str = "账单模块";
+                else if (AddingWay == 1) str = "成本预算模块";
+
+                return str;
+            }
+        }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string? Remark { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        public DateTime? CreateTime { get; set; }
+    }
+
+
+
+    #endregion
 }

+ 73 - 0
OASystem/OASystem.Domain/ViewModels/Groups/EnterExitCostView.cs

@@ -170,6 +170,79 @@ namespace OASystem.Domain.ViewModels.Groups
 
     }
 
+    /// <summary>
+    /// 出入境国家(城市)费用标准 Info  View
+    /// </summary>
+    public class NationalTravelFeeInfoByCountryAndCityView
+    {
+        /// <summary>
+        /// 洲别
+        /// </summary>
+        public string? Continent { get; set; }
+
+        /// <summary>
+        /// 国家
+        /// </summary>
+        public string? Country { get; set; }
+
+        /// <summary>
+        /// 城市
+        /// </summary>
+        public string? City { get; set; }
+
+        /// <summary>
+        /// 币种
+        /// Sys_SetData STid=66
+        /// </summary>
+        public int Currency { get; set; }
+
+        /// <summary>
+        /// 币种code
+        /// </summary>
+        public string CurrencyCode { get; set; }
+
+        /// <summary>
+        /// 币种名称
+        /// </summary>
+        public string CurrencyName { get; set; }
+
+        /// <summary>
+        /// 住宿费
+        /// </summary>
+        public decimal RoomCost { get; set; }
+
+        /// <summary>
+        /// 伙食费
+        /// </summary>
+        public decimal FoodCost { get; set; }
+
+        /// <summary>
+        /// 公杂费 
+        /// </summary>
+        public decimal PublicCost { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 最后更新人 
+        /// </summary>
+        public int LastUpdateUserId { get; set; }
+
+        /// <summary>
+        /// 最后更新人
+        /// </summary>
+        public string LastUpdateUserName { get; set; }
+
+        /// <summary>
+        /// 最后更新时间 
+        /// </summary>
+        public DateTime? LastUpdateTime { get; set; } = DateTime.Now;
+
+    }
+
     /// <summary>
     /// 出入境费用info
     /// </summary>

+ 37 - 0
OASystem/OASystem.Domain/ViewModels/Groups/Grp_CarTouristGuideGroundView.cs

@@ -0,0 +1,37 @@
+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.Groups
+{
+    public class Grp_CarTouristGuideGroundView:Grp_CarTouristGuideGroundReservations
+    {
+        /// <summary>
+        /// 行号
+        /// </summary>
+        public int RowNumber { get; set; }
+        /// <summary>
+        /// 此次付款百分百
+        /// </summary>
+        public decimal PayPercentage { get; set; }
+        /// <summary>
+        /// 此次付款金额
+        /// </summary>
+        public decimal PayThenMoney { get; set; }
+        /// <summary>
+        /// 剩余尾款
+        /// </summary>
+        public decimal RemainingBalance { get; set; }
+        /// <summary>
+        /// 总经理是否审核
+        /// </summary>
+        public int IsAuditGM { get; set; }
+        /// <summary>
+        /// 币种
+        /// </summary>
+        public string CurrencyStr { get; set; }
+    }
+}

+ 26 - 0
OASystem/OASystem.Domain/ViewModels/Groups/VisaInfoView.cs

@@ -0,0 +1,26 @@
+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.Groups
+{
+    public class VisaInfoView:Grp_VisaInfo
+    {
+        /// <summary>
+        /// 行号
+        /// </summary>
+        public int RowNumber { get; set; }
+        /// <summary>
+        /// 总经理是否审核
+        /// </summary>
+        public int IsAuditGM { get; set; }
+        /// <summary>
+        /// 币种
+        /// </summary>
+        public string VisaCurrencyStr { get; set; }
+    }
+
+}

+ 2 - 0
OASystem/OASystem.Domain/ViewModels/PersonnelModule/WageSheetMonthView.cs

@@ -37,6 +37,8 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
     /// </summary>
     public class CalendarInfoView
     {
+        public int Id { get; set; }
+
         /// <summary>
         /// 日期 
         /// Eg:yyyy-MM-dd

+ 1 - 1
OASystem/OASystem.Domain/ViewModels/PersonnelModule/WageSheetView.cs

@@ -479,7 +479,7 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
         /// </summary>
         public string? Type { get; set; }
 
-        public Object? Ex_ItemInfo { get; set; }
+        public Object Ex_ItemInfo { get; set; }
     }
 
 

+ 2 - 0
OASystem/OASystem.Domain/ViewModels/QiYeWeChat/ApprovalDataView.cs

@@ -361,6 +361,8 @@ namespace OASystem.Domain.ViewModels.QiYeWeChat
         /// </summary>
         public List<Related_Approval> related_approval { get; set; }
 
+        public Attendance attendance { get; set; }
+
         ///// <summary>
         ///// 
         ///// </summary>

+ 353 - 0
OASystem/OASystem.Domain/ViewModels/System/OA2014UsersView.cs

@@ -0,0 +1,353 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.System
+{
+    /// <summary>
+    /// 数据库 OA2014
+    /// 表  Users 
+    /// View 
+    /// </summary>
+    public class OA2014UsersView
+    {
+        int id;
+
+        /// <summary>
+        /// 主键
+        /// </summary>
+        public int Id
+        {
+            get { return id; }
+            set { id = value; }
+        }
+
+        string cnName;
+
+        /// <summary>
+        /// 中文姓名
+        /// </summary>
+        public string CnName
+        {
+            get { return cnName; }
+            set { cnName = value; }
+        }
+
+        string enName;
+
+        /// <summary>
+        /// 英文姓名
+        /// </summary>
+        public string EnName
+        {
+            get { return enName; }
+            set { enName = value; }
+        }
+
+        string number;
+
+        /// <summary>
+        /// 员工号
+        /// </summary>
+        public string Number
+        {
+            get { return number; }
+            set { number = value; }
+        }
+
+        int did;
+
+        /// <summary>
+        /// 设置数据类外键
+        /// </summary>
+        public int Did
+        {
+            get { return did; }
+            set { did = value; }
+        }
+
+        string password;
+
+        /// <summary>
+        /// 密码
+        /// </summary>
+        public string Password
+        {
+            get { return password; }
+            set { password = value; }
+        }
+
+        int sex;
+
+        /// <summary>
+        /// 性别
+        /// </summary>
+        public int Sex
+        {
+            get { return sex; }
+            set { sex = value; }
+        }
+
+        string post;
+
+        /// <summary>
+        /// 职位
+        /// </summary>
+        public string Post
+        {
+            get { return post; }
+            set { post = value; }
+        }
+
+        string ext;
+
+        /// <summary>
+        /// 分机号
+        /// </summary>
+        public string Ext
+        {
+            get { return ext; }
+            set { ext = value; }
+        }
+
+        string phone;
+
+        /// <summary>
+        /// 手机号
+        /// </summary>
+        public string Phone
+        {
+            get { return phone; }
+            set { phone = value; }
+        }
+
+        string urgentPhone;
+
+        /// <summary>
+        /// 紧急联络电话
+        /// </summary>
+        public string UrgentPhone
+        {
+            get { return urgentPhone; }
+            set { urgentPhone = value; }
+        }
+
+        string email;
+
+        /// <summary>
+        /// 电子邮箱
+        /// </summary>
+        public string Email
+        {
+            get { return email; }
+            set { email = value; }
+        }
+
+        string address;
+
+        /// <summary>
+        /// 目前所在地区
+        /// </summary>
+        public string Address
+        {
+            get { return address; }
+            set { address = value; }
+        }
+
+        DateTime edate;
+
+        /// <summary>
+        /// 入职日期
+        /// </summary>
+        public DateTime Edate
+        {
+            get { return edate; }
+            set { edate = value; }
+        }
+
+        DateTime rdate;
+
+        /// <summary>
+        /// 离职日期
+        /// </summary>
+        public DateTime Rdate
+        {
+            get { return rdate; }
+            set { rdate = value; }
+        }
+
+        int seniority;
+
+        /// <summary>
+        /// 工龄
+        /// </summary>
+        public int Seniority
+        {
+            get { return seniority; }
+            set { seniority = value; }
+        }
+
+        string remark;
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark
+        {
+            get { return remark; }
+            set { remark = value; }
+        }
+
+        int isDel;
+
+        /// <summary>
+        /// 删除标识
+        /// </summary>
+        public int IsDel
+        {
+            get { return isDel; }
+            set { isDel = value; }
+        }
+
+        int company;
+
+        /// <summary>
+        /// 所属公司
+        /// </summary>
+        public int Company
+        {
+            get { return company; }
+            set { company = value; }
+        }
+
+        string birthday;
+
+        /// <summary>
+        /// 出生日期
+        /// </summary>
+        public string Birthday
+        {
+            get { return birthday; }
+            set { birthday = value; }
+        }
+        string iDCard;
+
+        /// <summary>
+        /// 身份证号码
+        /// </summary>
+        public string IDCard
+        {
+            get { return iDCard; }
+            set { iDCard = value; }
+        }
+        string startWorkDate;
+        /// <summary>
+        /// 最初参加工作时间
+        /// </summary>
+        public string StartWorkDate
+        {
+            get { return startWorkDate; }
+            set { startWorkDate = value; }
+        }
+        string education;
+
+        /// <summary>
+        /// 学历
+        /// </summary>
+        public string Education
+        {
+            get { return education; }
+            set { education = value; }
+        }
+        string professional;
+
+        /// <summary>
+        /// 专业
+        /// </summary>
+        public string Professional
+        {
+            get { return professional; }
+            set { professional = value; }
+        }
+        string graduateInstitutions;
+
+        /// <summary>
+        /// 毕业院校
+        /// </summary>
+        public string GraduateInstitutions
+        {
+            get { return graduateInstitutions; }
+            set { graduateInstitutions = value; }
+        }
+        string theOrAdultEducation;
+
+        /// <summary>
+        /// 统招/成教
+        /// </summary>
+        public string TheOrAdultEducation
+        {
+            get { return theOrAdultEducation; }
+            set { theOrAdultEducation = value; }
+        }
+        string maritalStatus;
+        /// <summary>
+        /// 婚姻状况
+        /// </summary>
+        public string MaritalStatus
+        {
+            get { return maritalStatus; }
+            set { maritalStatus = value; }
+        }
+        string homeAddress;
+
+        /// <summary>
+        /// 家庭地址
+        /// </summary>
+        public string HomeAddress
+        {
+            get { return homeAddress; }
+            set { homeAddress = value; }
+        }
+        string usePeriod;
+        /// <summary>
+        /// 试用期限
+        /// </summary>
+        public string UsePeriod
+        {
+            get { return usePeriod; }
+            set { usePeriod = value; }
+        }
+        string workExperience;
+
+        /// <summary>
+        /// 工作经历单位
+        /// </summary>
+        public string WorkExperience
+        {
+            get { return workExperience; }
+            set { workExperience = value; }
+        }
+        string certificateTime;
+        /// <summary>
+        /// 证书时间
+        /// </summary>
+        public string CertificateTime
+        {
+            get { return certificateTime; }
+            set { certificateTime = value; }
+        }
+        string certificate;
+
+        /// <summary>
+        /// 专业培训及资格证书
+        /// </summary>
+        public string Certificate
+        {
+            get { return certificate; }
+            set { certificate = value; }
+        }
+
+    }
+}

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

@@ -18,6 +18,8 @@ namespace OASystem.Domain.ViewModels.System
         /// setdatatype id
         /// </summary>
         public int STid { get; set; }
+
+        public string Remark { get; set; }
     }
 
     /// <summary>

+ 4 - 0
OASystem/OASystem.Domain/ViewModels/ViewBase.cs

@@ -35,4 +35,8 @@
         /// </summary>
         public List<T> DataList { get; set; }
     }
+    public class DataCount
+    {
+        public int Count { get; set; }
+    }
 }

+ 137 - 1
OASystem/OASystem.Infrastructure/Repositories/Financial/ForeignReceivablesRepository.cs

@@ -109,7 +109,6 @@ namespace OASystem.Infrastructure.Repositories.Financial
 
         }
 
-
         /// <summary>
         /// 应收款项 删除
         /// </summary>
@@ -269,7 +268,144 @@ namespace OASystem.Infrastructure.Repositories.Financial
 
         #endregion
 
+        #region 未关联已收款项
+
+        /// <summary>
+        /// 收款账单 数据源
+        /// </summary>
+        /// <returns></returns>
+        public async Task<Result> PostDataSource()
+        {
+            Result result = new() { Code = -2 };
+
+            var groupNameData = await _delegationRep.GetGroupNameList(new GroupNameDto());
+            var currencyData = await _setDataRep.GetSetDataBySTId(_setDataRep, 66); //币种
+            var remittanceMethodData = await _setDataRep.GetSetDataBySTId(_setDataRep, 14); //汇款方式
+
+            result.Code = 0;
+            result.Msg = "成功!";
+            result.Data = new
+            {
+                GroupNameData = groupNameData.Data,
+                CurrencyData = currencyData.Data,
+                RemittanceMethodData = remittanceMethodData.Data
+            };
+
+            return result;
+        }
+
+        /// <summary>
+        /// 根据diid查询团组应收款项
+        /// </summary>
+        /// <param name="diid"></param>
+        /// <returns></returns>
+        public async Task<Result> PostGroupReceivablesInfoByDiId(ForForeignReceivablesNewDto dto)
+        {
+            Result result = new() { Code = -2 };
+
+            var groupInfoData = await _delegationRep.GetGroupInfo(new GroupInfoDto() { Id = dto.DiId });
+
+            //应收款项
+            string groupReceivedSql = string.Format(@"Select * From Fin_ForeignReceivables Where IsDel=0 And Diid={0}", dto.DiId);
+            var groupReceivedList = await _sqlSugar.SqlQueryable<ProceedsReceivedNewView>(groupReceivedSql).ToListAsync();
+
+            result.Code = 0;
+            result.Msg = "查询成功!";
+            result.Data = new
+            {
+                GroupInfo = groupInfoData.Data,
+                GroupCollectionStatementData = groupReceivedList
+            };
 
+            return result;
+
+        }
+
+        /// <summary>
+        /// 财务模块
+        /// 收款账单 Add And Update
+        /// </summary>
+        /// <param name="diid"></param>
+        /// <returns></returns>
+        public async Task<Result> PostReceivablesSave(ForeignReceivablesSaveDto dto)
+        {
+            Result result = new() { Code = -2 };
+
+            if (dto.foreignReceivablesInfos.Count <= 0)
+            {
+                result.Msg = "收款账单没有信息,不能进行,添加或修改操作!!!";
+                return result;
+            }
+
+            int addCount = 0, updateCount = 0;
+            if (dto.PortType == 1)
+            {
+                List<Fin_ForeignReceivables> _ForeignReceivables = new List<Fin_ForeignReceivables>();
+                foreach (var item in dto.foreignReceivablesInfos)
+                {
+                    _ForeignReceivables.Add(new Fin_ForeignReceivables()
+                    {
+                        Diid = dto.DiId,
+                        Id = item.Id,
+                        PriceName = item.PriceName,
+                        Price = item.Price,
+                        Count = item.Count,
+                        Unit = item.Unit,
+                        ItemSumPrice = item.ItemSumPrice,
+                        Rate = item.Rate,
+                        Currency = item.Currency,
+                        AddingWay = item.AddingWay,
+                        CreateUserId = dto.UserId,
+                        CreateTime = DateTime.Now,
+                        Remark = item.Remark
+                    });
+                }
+                if (_ForeignReceivables.Count > 0)
+                {
+                    var x = _sqlSugar.Storageable(_ForeignReceivables).ToStorage();
+                    addCount = x.AsInsertable.ExecuteCommand();        //不存在插入
+                    updateCount = x.AsUpdateable.ExecuteCommand();    //存在更新
+                }
+                result.Code = 0;
+                result.Msg = string.Format(@"操作成功!添加:{0}条;更新:{1};", addCount, updateCount);
+            }
+
+            return result;
+        }
+
+        /// <summary>
+        /// 财务模块
+        /// 收款账单 
+        /// Del
+        /// </summary>
+        /// <param name="diid"></param>
+        /// <returns></returns>
+        public async Task<Result> PostReceivablesDel(ForeignReceivablesDelDto dto)
+        {
+            Result result = new() { Code = -2 };
+           var delStatus = await _sqlSugar.Updateable<Fin_ForeignReceivables>()
+                                     .SetColumns(a => new Fin_ForeignReceivables
+                                     {
+                                         IsDel = 1,
+                                         DeleteUserId = dto.UserId,
+                                         DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                                     })
+                                     .Where(a => a.Id == dto.Id)
+                                     .ExecuteCommandAsync();
+
+            if (delStatus > 0)
+            {
+                result.Msg = "操作成功!";
+                result.Code = 0;
+            }
+            else
+            {
+                result.Msg = "操作成功!";
+            }
+            return result;
+        }
+
+        #endregion
 
     }
 }

+ 4 - 0
OASystem/OASystem.Infrastructure/Repositories/Groups/AirTicketResRepository.cs

@@ -89,6 +89,10 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 {
                     UserId = UserId.Substring(0, UserId.Length - 1);
                 }
+                else
+                {
+                    UserId = "0";
+                }
                 string sql = string.Format(@"select a.*,c.IsAuditGM,(select Name from Sys_SetData where Id=a.cType) as 'CTypeName',(select Name from 
                                                 Sys_SetData where Id=a.PreCurrency) as 'PreCurrencyStr',(select Name from Sys_SetData where Id=a.Currency)
                                                 as 'CurrencyStr' from Grp_AirTicketReservations a,Grp_CreditCardPayment c where  a.id=c.CId  and a.isdel={1} and c.IsDel={1}

+ 221 - 0
OASystem/OASystem.Infrastructure/Repositories/Groups/CarTouristGuideGroundRepository.cs

@@ -0,0 +1,221 @@
+using AutoMapper;
+using OASystem.Domain;
+using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Entities.Financial;
+using OASystem.Domain.Entities.Groups;
+using OASystem.Domain.ViewModels.Groups;
+using OASystem.Infrastructure.Tools;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Infrastructure.Repositories.Groups
+{
+    public class CarTouristGuideGroundRepository:BaseRepository<Grp_CarTouristGuideGroundReservations, Grp_CarTouristGuideGroundReservationsContent>
+    {
+        private readonly IMapper _mapper;
+
+        public CarTouristGuideGroundRepository(SqlSugarClient sqlSugar, IMapper mapper)
+            : base(sqlSugar)
+        {
+            _mapper = mapper;
+        }
+
+        public async Task<Result> OpCarTouristGuideGround(OpCarTouristGuideGroundDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+            BeginTran();
+            try
+            {
+                //int id = 0;
+                //Grp_CarTouristGuideGroundReservations grp_CarTouristGuide = _mapper.Map<Grp_CarTouristGuideGroundReservations>(dto);
+                //if (dto.Status == 1)//添加
+                //{
+                //    Grp_CarTouristGuideGroundReservations grp_CarTouristGuideGround = _sqlSugar.Queryable<Grp_CarTouristGuideGroundReservations>().First(a => a.IsDel == 0 && a.Area == dto.Area && a.BusName == dto.BusName && a.ServiceGuide == dto.ServiceGuide);
+                //    if (grp_CarTouristGuideGround != null)
+                //    {
+                //        return result = new Result() { Code = -1, Msg = "该笔费用已存在,请勿重复添加!" };
+                //    }
+                //    else
+                //    {
+                //        id = await AddAsyncReturnId(grp_CarTouristGuide);
+                //        if (id != 0)
+                //        {
+                //            //int cId = await _sqlSugar.Insertable(c).ExecuteReturnIdentityAsync();
+                //            if (true)
+                //            {
+                //                result = new Result() { Code = 0, Msg = "添加成功!" };
+
+                //            }
+                //            else
+                //            {
+                //                RollbackTran();
+                //                result = new Result() { Code = -1, Msg = "添加失败!" };
+                //            }
+                //        }
+                //        else
+                //        {
+                //            RollbackTran();
+                //            result = new Result() { Code = -1, Msg = "添加失败,请稍后重试!" };
+                //        }
+                //    }
+
+                //}
+                //else if (dto.Status == 2)//修改
+                //{
+
+                //    bool res = await UpdateAsync(a => a.Id == dto.Id, a => new Grp_VisaInfo
+                //    {
+                //        VisaClient = grp_Visa1.VisaClient,
+                //        VisaPrice = grp_Visa1.VisaPrice,
+                //        VisaCurrency = grp_Visa1.VisaCurrency,
+                //        IsThird = grp_Visa1.IsThird,
+                //        PassengerType = grp_Visa1.PassengerType,
+                //        VisaNumber = grp_Visa1.VisaNumber,
+                //        VisaFreeNumber = grp_Visa1.VisaFreeNumber,
+                //        Remark = dto.Remark,
+                //    });
+                //    if (res)
+                //    {
+                //        int CTable = await _sqlSugar.Updateable<Grp_CreditCardPayment>().Where(a => a.CId == grp_Visa1.Id && a.CTable == 80).SetColumns(a => new Grp_CreditCardPayment
+                //        {
+                //            PayDId = dto.PayDId,
+                //            PayMoney = c.PayMoney,
+                //            PaymentCurrency = c.PaymentCurrency,
+                //            Payee = c.Payee,
+                //            OrbitalPrivateTransfer = c.OrbitalPrivateTransfer,
+                //            DayRate = c.DayRate,
+                //            RMBPrice = c.RMBPrice,
+                //            ConsumptionPatterns = c.ConsumptionPatterns,
+                //            ConsumptionDate = c.ConsumptionDate,
+                //            CTDId = c.CTDId,
+                //            CompanyBankNo = c.CompanyBankNo,
+                //            OtherBankName = c.OtherBankName,
+                //            OtherSideNo = c.OtherSideNo,
+                //            OtherSideName = c.OtherSideName,
+                //            BankNo = c.BankNo,
+                //            CardholderName = c.CardholderName,
+                //            Remark = c.Remark,
+
+                //        }).ExecuteCommandAsync();
+
+                //        result = new Result() { Code = 0, Msg = "修改成功!" };
+                //    }
+                //    else
+                //    {
+                //        RollbackTran();
+                //        result = new Result() { Code = -1, Msg = "修改失败,请稍后重试!" };
+                //    }
+                //}
+                //CommitTran();
+            }
+            catch (Exception ex)
+            {
+                result = new Result() { Code = -2, Msg = "未知错误" };
+            }
+            return result;
+        }
+
+        public async Task<Result> QueryCarTouristGuideGroundByDiId(CarTouristGuideGroundDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+            if (dto.PortType == 0 || string.IsNullOrWhiteSpace(dto.PortType.ToString()))
+            {
+                return result = new Result() { Code = -1, Msg = "请传入PortType参数,请求端口分类 1 Web 2 Android 3 IOS" };
+            }
+            try
+            {
+                #region SQL条件拼接
+
+                string sqlWhere = string.Empty;
+                sqlWhere += string.Format(@"And t.DIId={0} and t.isdel={1}", dto.DiId, 0);
+                string UserId = "";
+                List<Grp_GroupsTaskAssignment> gtaUIdList = _sqlSugar.Queryable<Grp_GroupsTaskAssignment>().Where(a => a.DIId == dto.DiId && a.IsDel == 0 && a.CTId == 79).ToList();
+                foreach (Grp_GroupsTaskAssignment gta in gtaUIdList)
+                    UserId += gta.UId + ",";
+
+                if (!string.IsNullOrWhiteSpace(UserId))
+                {
+                    UserId = UserId.Substring(0, UserId.Length - 1);
+                }
+                else
+                {
+                    UserId = "0";
+                }
+                
+                sqlWhere += string.Format(@" And t.CreateUserId in ({0})", UserId);
+                if (!string.IsNullOrEmpty(sqlWhere.Trim()))
+                {
+                    Regex r = new Regex("And");
+                    sqlWhere = r.Replace(sqlWhere, "Where", 1);
+                }
+
+                #endregion
+                int startIndex = (dto.PageIndex - 1) * dto.PageSize + 1;
+                int endIndex = startIndex + dto.PageSize - 1;
+                if (dto.PortType == 1)
+                {
+                    string sql = string.Format(@"select t.*,s.Name as CurrencyStr,c.IsAuditGM,c.PayPercentage,c.PayMoney from 
+                                                Grp_CarTouristGuideGroundReservations t
+                                                left Join Grp_CreditCardPayment c on CTable=79 and c.CId=t.Id
+                                                left Join Sys_SetData s on s.Id=t.CId {0}
+                                                order by CreateTime desc", sqlWhere);
+                    List<Grp_CarTouristGuideGroundView> infoViews = _sqlSugar.SqlQueryable<Grp_CarTouristGuideGroundView>(sql).ToList();
+                    foreach (var item in infoViews)
+                    {
+                        item.PayThenMoney = Math.Round(item.PayPercentage/100 * item.ServiceQuotedPrice, 2);
+                        item.RemainingBalance = Math.Round(item.ServiceQuotedPrice- item.PayPercentage / 100 * item.ServiceQuotedPrice);
+                    }
+                    return result = new Result() { Code = 0, Msg = "查询成功!", Data = infoViews };
+                }
+                else if (dto.PortType == 2 || dto.PortType == 3)
+                {
+                    string sql = string.Format(@"Select * From (	
+                                            Select row_number() over (order by t.Id Desc) as RowNumber,t.*,s.Name as CurrencyStr,c.IsAuditGM,c.PayPercentage
+                                            from 
+                                            Grp_CarTouristGuideGroundReservations t
+                                            left Join Grp_CreditCardPayment c on CTable=79 and c.CId=t.Id
+                                            left Join Sys_SetData s on s.Id=t.CId {0}
+                                            ) temp Where RowNumber Between {1} and {2}", sqlWhere, startIndex, endIndex);
+
+                    List<Grp_CarTouristGuideGroundView> grp_CarTourists = _sqlSugar.SqlQueryable<Grp_CarTouristGuideGroundView>(sql).ToList();
+                    foreach (var item in grp_CarTourists)
+                    {
+                        item.PayThenMoney = Math.Round(item.PayPercentage / 100 * item.ServiceQuotedPrice, 2);
+                        item.RemainingBalance = Math.Round(item.ServiceQuotedPrice - item.PayPercentage / 100 * item.ServiceQuotedPrice);
+                    }
+                    string CountSql = string.Format(@"Select COUNT(1) as Count From (	
+                                                        select t.*,s.Name as CurrencyStr,c.IsAuditGM,c.PayPercentage from 
+                                                        Grp_CarTouristGuideGroundReservations t
+                                                        left Join Grp_CreditCardPayment c on CTable=79 and c.CId=t.Id
+                                                        left Join Sys_SetData s on s.Id=t.CId {0}
+                                                        ) temp ", sqlWhere);
+                    DataCount dataCount = _sqlSugar.SqlQueryable<DataCount>(CountSql).First();
+                    if (dataCount != null)
+                    {
+                        int count = dataCount.Count;
+                        float totalPage = (float)count / dto.PageSize;//总页数
+                        if (totalPage == 0) totalPage = 1;
+                        else totalPage = (int)Math.Ceiling((double)totalPage);
+
+
+                        ListViewBase<Grp_CarTouristGuideGroundView> rst = new ListViewBase<Grp_CarTouristGuideGroundView>();
+                        rst.DataList = grp_CarTourists;
+                        rst.DataCount = count;
+                        rst.CurrPageIndex = dto.PageIndex;
+                        rst.CurrPageSize = dto.PageSize;
+                        return result = new Result() { Code = 0, Msg = "查询成功!", Data = rst };
+                    }
+                }
+            }
+            catch (Exception)
+            {
+                return result = new Result() { Code = -2, Msg = "未知错误" };
+                throw;
+            }
+            return result;
+        }
+    }
+}

+ 4 - 0
OASystem/OASystem.Infrastructure/Repositories/Groups/DecreasePaymentsRepository.cs

@@ -43,6 +43,10 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 {
                     UserId = UserId.Substring(0, UserId.Length - 1);
                 }
+                else
+                {
+                    UserId = "0";
+                }
                 string sql = string.Format(@"select Id,DiId,PriceName,Price,(select name from Sys_SetData where id=s.Currency) as Currency,FilePath,
                                             (select CnName from Sys_Users where Id=s.CreateUserId) as 'CreateUserName',CreateTime,(select IsAuditGM from 
                                             Grp_CreditCardPayment where CTable=98 and CId=s.Id and IsDel=0) as 'isAudit' from Grp_DecreasePayments s where DIID={0} and IsDel=0 and s.CreateUserId in ({1}) ", dto.DiId,UserId);

+ 2 - 2
OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationInfoRepository.cs

@@ -590,11 +590,11 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 if (deleteStatus)
                 {
                     result.Code = 0;
-                    result.Msg = "确认出团成功!";
+                    result.Msg = "确认出团设置成功!";
                 }
                 else
                 {
-                    result.Msg = "确认出团失败!";
+                    result.Msg = "确认出团设置失败!";
                 }
 
             }

+ 36 - 3
OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationVisaRepository.cs

@@ -39,15 +39,48 @@ From DelegationInfo With(Nolock) {2}
 
             foreach (var item in dataSource)
             {
-                string sql2 = string.Format(@" Select * From Grp_VisaProgressCustomer With(Nolock) Where DiId={0} And IsDel=0 ", item.DiId);
-                List<Grp_VisaProgressCustomer> listComplete = _sqlSugar.SqlQueryable<Grp_VisaProgressCustomer>(sql2).ToList();
+                //string sql2 = string.Format(@" Select * From Grp_VisaProgressCustomer With(Nolock) Where DiId={0} And IsDel=0 ", item.DiId);
+                //List<Grp_VisaProgressCustomer> listComplete = _sqlSugar.SqlQueryable<Grp_VisaProgressCustomer>(sql2).ToList();
+                ChangeDataBase(DBEnum.OA2023DB);
+                string sql2 = string.Format(@" Select WorkStatus as code,COUNT(1) as nums From Grp_VisaProgressCustomer With(Nolock) Where DiId={0} And IsDel=0 Group by WorkStatus ", item.DiId);
+                List<dynamic> listComplete = _sqlSugar.SqlQueryable<dynamic>(sql2).ToList();
+                int totalCount = 0;
+
+
+                //未作详细描述文本
+                int count_0 = 0;
+                int count_1 = 0;
+                int count_2 = 0;
+                int count_3 = 0;
+                foreach (var comCount in listComplete)
+                {
+                    switch (comCount.code)
+                    {
+                        case 0: count_0 = comCount.nums; break;
+                        case 1: count_1 = comCount.nums; break;
+                        case 2: count_2 = comCount.nums; break;
+                        case 3: count_3 = comCount.nums; break;
+                        default:
+                            break;
+                    }
+                    totalCount += comCount.nums;
+                }
 
-                item.CompletePNumber = string.Format(@"已完成{0}人", listComplete.Count);
+                int comNums = totalCount - count_0;
+
+                if (comNums > 0)
+                {
+                    item.CompletePNumber = string.Format(@"{0} / {1}", comNums, totalCount);
+                }
+                else {
+                    item.CompletePNumber = "跳转配置";
+                }
             }
             rst.DataList = new List<Grp_DelegationVisaView>(dataSource);
 
             if (rst.DataList.Count > 0)
             {
+                ChangeDataBase(DBEnum.OA2014DB);
                 string sqlCount = string.Format(@" Select Id as DiId From DelegationInfo With(Nolock) {0} ", sqlWhere);
                 int dataCount = _sqlSugar.SqlQueryable<Grp_DelegationVisaView>(sqlCount).Count();
                 rst.DataCount = dataCount;

+ 1 - 1
OASystem/OASystem.Infrastructure/Repositories/Groups/EnterExitCostRepository.cs

@@ -224,7 +224,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
             {
 
                 var _nationalTravelFee = _sqlSugar.Storageable<Grp_NationalTravelFee>(nationalTravelFee).ToStorage();
-                if (dto.Id != 0) //新增
+                if (dto.Id == 0) //新增
                 {
                     string selectSql = string.Format(@"Select * From Grp_NationalTravelFee 
                                                    Where IsDel = 0 

+ 4 - 0
OASystem/OASystem.Infrastructure/Repositories/Groups/InvitationOfficialActivitiesRepository.cs

@@ -126,6 +126,10 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 {
                     UserId = UserId.Substring(0, UserId.Length - 1);
                 }
+                else
+                {
+                    UserId = "0";
+                }
                 sqlWhere += string.Format(@" And i.CreateUserId in ({0})", UserId);
                 if (!string.IsNullOrEmpty(sqlWhere.Trim()))
                 {

+ 286 - 0
OASystem/OASystem.Infrastructure/Repositories/Groups/VisaPriceRepository.cs

@@ -0,0 +1,286 @@
+
+using AutoMapper;
+using NPOI.SS.Formula.Functions;
+using OASystem.Domain;
+using OASystem.Domain.Dtos.Financial;
+using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Entities.Financial;
+using OASystem.Domain.Entities.Groups;
+using OASystem.Domain.ViewModels.Financial;
+using OASystem.Domain.ViewModels.Groups;
+using OASystem.Infrastructure.Repositories.System;
+using OASystem.Infrastructure.Tools;
+using Org.BouncyCastle.Asn1.Cms;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Cryptography;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Infrastructure.Repositories.Groups
+{
+    public class VisaPriceRepository : BaseRepository<Grp_VisaInfo, VisaPriceDto>
+    {
+        private readonly IMapper _mapper;
+
+        public VisaPriceRepository(SqlSugarClient sqlSugar,IMapper mapper)
+            : base(sqlSugar)
+        {
+            _mapper=mapper;
+        }
+        
+
+        /// <summary>
+        /// 根据diid查询签证费用列表
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> PostVisaByDiId(VisaPriceDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+            if (dto.PortType==0 ||string.IsNullOrWhiteSpace(dto.PortType.ToString()))
+            {
+               return result = new Result() { Code = -1, Msg = "请传入PortType参数,请求端口分类 1 Web 2 Android 3 IOS" };
+            }
+            try
+            {
+                #region SQL条件拼接
+
+                string sqlWhere = string.Empty;
+                if (!string.IsNullOrWhiteSpace(dto.VisaClient))
+                {
+                    sqlWhere += string.Format(@" And v.VisaClient like '%{0}%'", dto.VisaClient);
+                }
+                
+                sqlWhere += string.Format(@"And v.DIId={0} and v.isdel={1}", dto.DiID, 0);
+                string UserId = "";
+                List<Grp_GroupsTaskAssignment> gtaUIdList = _sqlSugar.Queryable<Grp_GroupsTaskAssignment>().Where(a => a.DIId == dto.DiID && a.IsDel == 0 && a.CTId == 80).ToList();
+                foreach (Grp_GroupsTaskAssignment gta in gtaUIdList)
+                    UserId += gta.UId + ",";
+
+                if (!string.IsNullOrWhiteSpace(UserId))
+                {
+                    UserId = UserId.Substring(0, UserId.Length - 1);
+                }
+                else
+                {
+                    UserId = "0";
+                }
+                sqlWhere += string.Format(@" And v.CreateUserId in ({0})", UserId);
+                if (!string.IsNullOrEmpty(sqlWhere.Trim()))
+                {
+                    Regex r = new Regex("And");
+                    sqlWhere = r.Replace(sqlWhere, "Where", 1);
+                }
+
+                #endregion
+                int startIndex = (dto.PageIndex - 1) * dto.PageSize + 1;
+                int endIndex = startIndex + dto.PageSize - 1;
+                if (dto.PortType==1)
+                {
+                    string sql = string.Format(@"select *,(select IsAuditGM from Grp_CreditCardPayment where CTable=80 and CId=v.Id) IsAuditGM,
+                                                (select Name from Sys_SetData where isdel=0 and v.VisaCurrency=Id) VisaCurrencyStr from
+                                                Grp_VisaInfo v {0} order by CreateTime desc",sqlWhere);
+                    List<VisaInfoView> infoViews = _sqlSugar.SqlQueryable<VisaInfoView>(sql).ToList();
+                    return result = new Result() { Code = 0, Msg = "查询成功!", Data = infoViews };
+                }
+                else if(dto.PortType==2 || dto.PortType==3)
+                {
+                    string sql = string.Format(@"Select * From (	
+                                            Select row_number() over (order by v.Id Desc) as RowNumber,v.*,c.IsAuditGM,s.Name as VisaCurrencyStr
+                                            From Grp_VisaInfo v
+                                            left Join Grp_CreditCardPayment c On v.Id = c.CId and CTable=80
+                                            Left Join Sys_SetData s On v.VisaCurrency = s.Id {0}
+                                            ) temp Where RowNumber Between {1} and {2}", sqlWhere, startIndex, endIndex);
+
+                    List<VisaInfoView> infoViews = _sqlSugar.SqlQueryable<VisaInfoView>(sql).ToList();
+
+                    string CountSql = string.Format(@"Select COUNT(1) as Count From (	
+                                            Select v.*,c.IsAuditGM,s.Name as VisaCurrencyStr
+                                            From Grp_VisaInfo v
+                                            left Join Grp_CreditCardPayment c On v.Id = c.CId and CTable=80
+                                            Left Join Sys_SetData s On v.VisaCurrency = s.Id {0}
+                                            ) temp", sqlWhere);
+                    DataCount dataCount = _sqlSugar.SqlQueryable<DataCount>(CountSql).First();
+                    if (dataCount!=null)
+                    {
+                        int count = dataCount.Count;
+                        float totalPage = (float)count / dto.PageSize;//总页数
+                        if (totalPage == 0) totalPage = 1;
+                        else totalPage = (int)Math.Ceiling((double)totalPage);
+
+
+                        ListViewBase<VisaInfoView> rst = new ListViewBase<VisaInfoView>();
+                        rst.DataList = infoViews;
+                        rst.DataCount = count;
+                        rst.CurrPageIndex = dto.PageIndex;
+                        rst.CurrPageSize = dto.PageSize;
+                        return result = new Result() { Code = 0, Msg = "查询成功!", Data = rst };
+                    }
+                }
+            }
+            catch (Exception)
+            {
+                return result = new Result() { Code = -2, Msg = "未知错误" };
+                throw;
+            }
+            return result;
+        }
+        /// <summary>
+        /// 根据签证费用Id查询单条数据及c表数据
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> PostVisaById(PostVisaByIdDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+            try
+            {
+                Grp_VisaInfo _VisaInfo = _sqlSugar.Queryable<Grp_VisaInfo>().First(a => a.Id == dto.Id && a.IsDel==0);
+                Grp_CreditCardPayment _CreditCardPayment = _sqlSugar.Queryable<Grp_CreditCardPayment>().First(a=>a.CId==dto.Id && a.IsDel==0 && a.CTable==80);
+                var data = new
+                {
+                    _VisaInfo = _VisaInfo,
+                    _CreditCardPayment = _CreditCardPayment
+                };
+                return result = new Result() { Code = 0, Msg = "暂无数据!", Data = data };
+            }
+            catch (Exception ex)
+            {
+                return result = new Result() { Code = -2, Msg = "未知错误" };
+            }
+        }
+        /// <summary>
+        /// 签证费用录入操作(Status:1.新增,2.修改)
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> OpVisaPrice(OpVisaPriceDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+            BeginTran();
+            try
+            {
+                int id = 0;
+                Grp_VisaInfo grp_Visa1 = _mapper.Map<Grp_VisaInfo>(dto);
+                Grp_CreditCardPayment c = _mapper.Map<Grp_CreditCardPayment>(dto);
+                c.PayMoney = dto.VisaPrice;
+                c.PaymentCurrency = dto.VisaCurrency;
+                c.Remark = dto.CRemark;
+                c.PayPercentage = 100;
+                c.CTable = 80;
+                c.CId = dto.Id;
+                c.IsAuditGM = 0;
+                if (c.PayDId == 72)
+                {
+                    c.IsPay = 1;
+                }
+                c.RMBPrice = c.RMBPrice;
+                c.DayRate = 1;
+                Grp_TeamRate _TeamRate = _sqlSugar.Queryable<Grp_TeamRate>().First(a => a.DiId == dto.DiId && a.IsDel == 0 && a.CTable == 80);
+                List<CurrencyInfo> currencyInfos = new List<CurrencyInfo>();
+                if (_TeamRate != null)
+                {
+                    Sys_SetData _SetData = _sqlSugar.Queryable<Sys_SetData>().First(a => a.IsDel == 0 && a.Id == c.PaymentCurrency);
+                    if (_SetData!=null)
+                    {
+                        currencyInfos = CommonFun.GetCurrencyChinaToList(_TeamRate.Remark);
+                        CurrencyInfo CurrencyRate = currencyInfos.Where(a => a.CurrencyCode == _SetData.Name).First();
+                        if (CurrencyRate!=null)
+                        {
+                            c.RMBPrice = c.PayMoney * Convert.ToDecimal(CurrencyRate.Rate);
+                            c.DayRate = CurrencyRate.Rate;
+                        }
+                    }
+                }
+               
+                if (dto.Status==1)//添加
+                {
+                    Grp_VisaInfo grp_Visa =_sqlSugar.Queryable<Grp_VisaInfo>().First(a=>a.IsDel==0 && a.VisaCurrency==dto.VisaCurrency && a.VisaPrice==dto.VisaPrice && a.VisaClient==dto.VisaClient);
+                    if (grp_Visa!=null)
+                    {
+                        return result = new Result() { Code = -1, Msg = "该笔费用已存在,请勿重复添加!" };
+                    }
+                    else
+                    {
+                        id = await AddAsyncReturnId(grp_Visa1);
+                        if (id!=0)
+                        {
+                            c.CId = id;
+                            int cId = await _sqlSugar.Insertable(c).ExecuteReturnIdentityAsync();
+                            if (cId != 0)
+                            {
+                                 result = new Result() { Code = 0, Msg = "添加成功!" };
+
+                            }
+                            else
+                            {
+                                RollbackTran();
+                                 result = new Result() { Code = -1, Msg = "添加失败!" };
+                            }
+                        }
+                        else
+                        {
+                            RollbackTran();
+                            result = new Result() { Code = -1, Msg = "添加失败,请稍后重试!" };
+                        }
+                    }
+                    
+                }
+                else if (dto.Status==2)//修改
+                {
+                    
+                    bool res = await UpdateAsync(a => a.Id == dto.Id, a => new Grp_VisaInfo
+                    {
+                        VisaClient = grp_Visa1.VisaClient,
+                        VisaPrice = grp_Visa1.VisaPrice,
+                        VisaCurrency = grp_Visa1.VisaCurrency,
+                        IsThird = grp_Visa1.IsThird,
+                        PassengerType = grp_Visa1.PassengerType,
+                        VisaNumber = grp_Visa1.VisaNumber,
+                        VisaFreeNumber = grp_Visa1.VisaFreeNumber,
+                        Remark = dto.Remark,
+                    });
+                    if (res)
+                    {
+                        int CTable = await _sqlSugar.Updateable<Grp_CreditCardPayment>().Where(a => a.CId == grp_Visa1.Id && a.CTable==80).SetColumns(a => new Grp_CreditCardPayment
+                        {
+                            PayDId = dto.PayDId,
+                            PayMoney = c.PayMoney,
+                            PaymentCurrency = c.PaymentCurrency,
+                            Payee = c.Payee,
+                            OrbitalPrivateTransfer = c.OrbitalPrivateTransfer,
+                            DayRate = c.DayRate,
+                            RMBPrice = c.RMBPrice,
+                            ConsumptionPatterns = c.ConsumptionPatterns,
+                            ConsumptionDate = c.ConsumptionDate,
+                            CTDId = c.CTDId,
+                            CompanyBankNo = c.CompanyBankNo,
+                            OtherBankName = c.OtherBankName,
+                            OtherSideNo = c.OtherSideNo,
+                            OtherSideName = c.OtherSideName,
+                            BankNo = c.BankNo,
+                            CardholderName = c.CardholderName,
+                            Remark = c.Remark,
+
+                        }).ExecuteCommandAsync();
+
+                        result = new Result() { Code = 0, Msg = "修改成功!" };
+                    }
+                    else
+                    {
+                        RollbackTran();
+                        result = new Result() { Code = -1, Msg = "修改失败,请稍后重试!" };
+                    }
+                }
+                CommitTran();
+            }
+            catch (Exception ex)
+            {
+                 result = new Result() { Code = -2, Msg = "未知错误" };
+            }
+            return result;
+        }
+    }
+}

+ 11 - 3
OASystem/OASystem.Infrastructure/Repositories/Login/LoginRepository.cs

@@ -27,7 +27,7 @@ namespace OASystem.Infrastructure.Repositories.Login
         public async Task<Result> Login(LoginDto loginDto)
         {
             Result result = new Result() { Code = -2 };
-            string SQLWhere = string.Format("Where Number='{0}'", loginDto.Number);
+            string SQLWhere = string.Format("Where Number='{0}' And Isdel = 0", loginDto.Number);
             string sql = string.Format("Select * From Sys_Users With(NoLock) {0}", SQLWhere);
             Sys_Users _entity = await GetSingleInfoBySqlWithNolockAsync(sql);
 
@@ -37,7 +37,7 @@ namespace OASystem.Infrastructure.Repositories.Login
                 return result;
             }
 
-            if (_entity.Password != loginDto.Password)
+            if (!_entity.Password.Equals(loginDto.Password))
             {
                 result.Msg = "账户或密码错误!";
                 return result;
@@ -104,6 +104,14 @@ namespace OASystem.Infrastructure.Repositories.Login
 
             string number = await CreateNumber(registerDto.DepId);
 
+            if (string.IsNullOrEmpty(number))
+            {
+                result.Code = -2;
+                result.Msg = "Number 设置失败,请前往对应部门 备注;里 设置Number前缀!";
+
+                return result;
+            }
+
             Sys_Users _userInfo = new Sys_Users()
             {
                 CnName = registerDto.CnName,
@@ -124,7 +132,7 @@ namespace OASystem.Infrastructure.Repositories.Login
                 Seniority = 0, //工龄默认 0
                 Birthday = Convert.ToDateTime(birthDay),
                 IDCard = registerDto.IdCrad,
-                StartWorkDate = new DateTime(1990, 1, 1),  //开始工作时间默认最原始时间
+                StartWorkDate = "1900-01-01 00:00:00.000",  //开始工作时间默认最原始时间
                 GraduateInstitutions = registerDto.GraduationSchhol,
                 Professional = registerDto.Major,
                 Education = registerDto.Education, //学历类型

+ 5 - 1
OASystem/OASystem.Infrastructure/Repositories/Resource/InvitationOfficialActivityDataRepository.cs

@@ -69,7 +69,11 @@ namespace OASystem.Infrastructure.Repositories.Resource
                             Grp_DelegationInfo _DelegationInfo = await _sqlSugar.Queryable<Grp_DelegationInfo>().FirstAsync(a => a.Id ==int.Parse(DelegationName[i]));
                             if (_DelegationInfo != null) { delegationNameList += _DelegationInfo.TeamName + ","; }
                         }
-                        item.DelegationStr = delegationNameList.Substring(0,delegationNameList.Length-1);
+                        if (!string.IsNullOrWhiteSpace(delegationNameList))
+                        {
+                            item.DelegationStr = delegationNameList.Substring(0, delegationNameList.Length - 1);
+                        }
+                        
                     }
                     if (dto.PageSize == 0 && dto.PageIndex == 0)
                     {

+ 1 - 0
OASystem/OASystem.Infrastructure/Repositories/Resource/LocalGuideDataRepository.cs

@@ -66,6 +66,7 @@ namespace OASystem.Infrastructure.Repositories.Resource
                         FitScore = dto.FitScore,
                         StrainScore = dto.StrainScore,
                         LocalAndChineseScore = dto.LocalAndChineseScore,
+                        StaffType=dto.StaffType,
                         Remark = dto.Remark,
                     });
                     if (!res)

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

@@ -146,9 +146,9 @@ namespace OASystem.Infrastructure.Repositories.System
         public async Task<List<UserInfo>> QueryUser(string sqlWhere)
         {
             string sql = string.Format(@"Select sc.CompanyName,sd.DepName,sjp.JobName,su.* From Sys_Users su 
-                                                        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);
+                                                        left Join Sys_Company sc On su.CompanyId = sc.Id
+                                                        left Join Sys_Department sd On su.DepId = sd.Id
+                                                        left Join Sys_JobPost sjp On su.JobPostId = sjp.Id {0}", sqlWhere);
             return await _sqlSugar.SqlQueryable<UserInfo>(sql).ToListAsync();
 
         }

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

@@ -298,4 +298,18 @@ public static class CommonFun
     }
     #endregion
 
+    #region 验证身份证号码
+    /// <summary>
+    /// 正则表达式
+    /// 验证身份证号码
+    /// </summary>
+    /// <param name="idNumber"></param>
+    /// <returns></returns>
+    public static bool ValidateIdNumber(this string idNumber)
+    {
+        string pattern = @"^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}(\d|X)$";
+        Regex regex = new Regex(pattern);
+        return regex.IsMatch(idNumber);
+    }
+    #endregion
 }