Browse Source

团组签证拍照上传01

jiangjc 1 year ago
parent
commit
8a801da47c

+ 2 - 0
OASystem/EntitySync/Program.cs

@@ -108,5 +108,7 @@ db.CodeFirst.SetStringDefaultLength(50).BackupTable().InitTables(new Type[]
     //typeof(Grp_NationalTravelFee),
     //typeof(Grp_NationalTravelFee),
     //typeof(Air_TicketBlackCode),
     //typeof(Air_TicketBlackCode),
     //typeof(Pm_WageSheet)       //人事模块 工资表单
     //typeof(Pm_WageSheet)       //人事模块 工资表单
+    typeof(Grp_VisaProgressCustomer),
+    typeof(Grp_VisaProgressCustomerPicture)
 });
 });
 Console.WriteLine("数据库结构同步完成!");
 Console.WriteLine("数据库结构同步完成!");

+ 146 - 111
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -24,6 +24,7 @@ using NPOI.SS.Formula.Functions;
 using OASystem.Domain.Dtos.CRM;
 using OASystem.Domain.Dtos.CRM;
 using System.Diagnostics;
 using System.Diagnostics;
 using MathNet.Numerics.Statistics.Mcmc;
 using MathNet.Numerics.Statistics.Mcmc;
+using AlibabaCloud.OpenApiClient.Models;
 
 
 namespace OASystem.API.Controllers
 namespace OASystem.API.Controllers
 {
 {
@@ -42,6 +43,7 @@ namespace OASystem.API.Controllers
         private readonly DecreasePaymentsRepository _decreasePaymentsRep;
         private readonly DecreasePaymentsRepository _decreasePaymentsRep;
         private readonly InvitationOfficialActivitiesRepository _InvitationOfficialActivitiesRep;
         private readonly InvitationOfficialActivitiesRepository _InvitationOfficialActivitiesRep;
         private readonly DelegationEnDataRepository _delegationEnDataRep;
         private readonly DelegationEnDataRepository _delegationEnDataRep;
+        private readonly DelegationVisaRepository _delegationVisaRep;
         private readonly SqlSugarClient _sqlSugar;
         private readonly SqlSugarClient _sqlSugar;
         private string url;
         private string url;
         private string path;
         private string path;
@@ -50,7 +52,8 @@ namespace OASystem.API.Controllers
 
 
         public GroupsController(IMapper mapper, SqlSugarClient sqlSugar, GrpScheduleRepository grpScheduleRep, DelegationInfoRepository groupRepository,
         public GroupsController(IMapper mapper, SqlSugarClient sqlSugar, GrpScheduleRepository grpScheduleRep, DelegationInfoRepository groupRepository,
             TaskAssignmentRepository taskAssignmentRep, AirTicketResRepository airTicketResRep, DecreasePaymentsRepository decreasePaymentsRep,
             TaskAssignmentRepository taskAssignmentRep, AirTicketResRepository airTicketResRep, DecreasePaymentsRepository decreasePaymentsRep,
-            InvitationOfficialActivitiesRepository InvitationOfficialActivitiesRep, DelegationEnDataRepository delegationEnDataRep, EnterExitCostRepository enterExitCostRep)
+            InvitationOfficialActivitiesRepository InvitationOfficialActivitiesRep, DelegationEnDataRepository delegationEnDataRep, EnterExitCostRepository enterExitCostRep
+            ,DelegationVisaRepository delegationVisaRep)
         {
         {
             _mapper = mapper;
             _mapper = mapper;
             _grpScheduleRep = grpScheduleRep;
             _grpScheduleRep = grpScheduleRep;
@@ -68,6 +71,7 @@ namespace OASystem.API.Controllers
             _InvitationOfficialActivitiesRep = InvitationOfficialActivitiesRep;
             _InvitationOfficialActivitiesRep = InvitationOfficialActivitiesRep;
             _delegationEnDataRep = delegationEnDataRep;
             _delegationEnDataRep = delegationEnDataRep;
             _enterExitCostRep = enterExitCostRep;
             _enterExitCostRep = enterExitCostRep;
+            _delegationVisaRep = delegationVisaRep;
         }
         }
 
 
         #region 流程管控
         #region 流程管控
@@ -220,7 +224,7 @@ namespace OASystem.API.Controllers
 
 
             return Ok(JsonView(groupData.Data));
             return Ok(JsonView(groupData.Data));
         }
         }
-       
+
 
 
         /// <summary>
         /// <summary>
         ///  接团信息详情
         ///  接团信息详情
@@ -440,6 +444,36 @@ namespace OASystem.API.Controllers
         }
         }
 
 
 
 
+        /// <summary>
+        ///  获取团组签证拍照上传进度01(团组列表)
+        /// </summary>
+        /// <param name="dto">请求dto</param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+
+        public async Task<IActionResult> PostIOSVisaProress(IOS_VisaDto dto)
+        {
+            if (dto == null)
+            {
+                return Ok(JsonView(false, "参数为空"));
+            }
+
+            if (dto.SearchType == 2) //获取列表
+            {
+                DelegationVisaViewList visaList = _delegationVisaRep.GetDelegationList(dto);
+
+                return Ok(visaList);
+            }
+            //else
+            //{
+            //    Res_ItemInfoView rstInfo = _resItemInfoRep.getItemInfo(_ItemInfoDto);
+            //    return Ok(rstInfo);
+            //}
+
+            return Ok(JsonView(false));
+        }
+
 
 
         #endregion
         #endregion
 
 
@@ -888,8 +922,8 @@ namespace OASystem.API.Controllers
         {
         {
             try
             try
             {
             {
-                List<Crm_GroupCustomer> crm_Groups = _sqlSugar.Queryable<Crm_GroupCustomer>().Where(a=>a.IsDel==0 && a.AirType==dto.Id).ToList();
-                if (crm_Groups.Count!=0)
+                List<Crm_GroupCustomer> crm_Groups = _sqlSugar.Queryable<Crm_GroupCustomer>().Where(a => a.IsDel == 0 && a.AirType == dto.Id).ToList();
+                if (crm_Groups.Count != 0)
                 {
                 {
                     List<dynamic> Customer = new List<dynamic>();
                     List<dynamic> Customer = new List<dynamic>();
                     foreach (var item in crm_Groups)
                     foreach (var item in crm_Groups)
@@ -898,7 +932,7 @@ namespace OASystem.API.Controllers
                         {
                         {
                             Id = item.Id,
                             Id = item.Id,
                             Pinyin = item.Pinyin,
                             Pinyin = item.Pinyin,
-                            Name = item.LastName+item.FirstName
+                            Name = item.LastName + item.FirstName
                         };
                         };
                         Customer.Add(data);
                         Customer.Add(data);
                     }
                     }
@@ -927,7 +961,7 @@ namespace OASystem.API.Controllers
                 var res = await _airTicketResRep.SoftDeleteByIdAsync<Grp_AirTicketReservations>(dto.Id.ToString(), dto.DeleteUserId);
                 var res = await _airTicketResRep.SoftDeleteByIdAsync<Grp_AirTicketReservations>(dto.Id.ToString(), dto.DeleteUserId);
                 if (!res)
                 if (!res)
                 {
                 {
-                    var result = await _sqlSugar.Updateable<Grp_CreditCardPayment>().Where(a => a.CId==dto.Id && a.CTable==85).SetColumns(a => new Grp_CreditCardPayment()
+                    var result = await _sqlSugar.Updateable<Grp_CreditCardPayment>().Where(a => a.CId == dto.Id && a.CTable == 85).SetColumns(a => new Grp_CreditCardPayment()
                     {
                     {
                         IsDel = 1,
                         IsDel = 1,
                         DeleteUserId = dto.DeleteUserId,
                         DeleteUserId = dto.DeleteUserId,
@@ -1857,7 +1891,7 @@ namespace OASystem.API.Controllers
         /// <param name="dto"></param>
         /// <param name="dto"></param>
         /// <returns></returns>
         /// <returns></returns>
         [HttpPost]
         [HttpPost]
-        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] 
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> InvitationOfficialActivitiesById(InvitationOfficialActivitiesByIdDto dto)
         public async Task<IActionResult> InvitationOfficialActivitiesById(InvitationOfficialActivitiesByIdDto dto)
         {
         {
             try
             try
@@ -1888,7 +1922,7 @@ namespace OASystem.API.Controllers
             {
             {
                 Result groupData = await _InvitationOfficialActivitiesRep.OpInvitationOfficialActivities(dto);
                 Result groupData = await _InvitationOfficialActivitiesRep.OpInvitationOfficialActivities(dto);
                 if (groupData.Code != 0)
                 if (groupData.Code != 0)
-                { 
+                {
                     return Ok(JsonView(false, groupData.Msg));
                     return Ok(JsonView(false, groupData.Msg));
                 }
                 }
                 return Ok(JsonView(true, groupData.Msg, groupData.Data));
                 return Ok(JsonView(true, groupData.Msg, groupData.Data));
@@ -1992,12 +2026,12 @@ namespace OASystem.API.Controllers
         {
         {
             try
             try
             {
             {
-                Grp_DelegationEnData _DelegationEnData=await _sqlSugar.Queryable<Grp_DelegationEnData>().FirstAsync(it => it.Id==dto.Id && it.IsDel==0);
+                Grp_DelegationEnData _DelegationEnData = await _sqlSugar.Queryable<Grp_DelegationEnData>().FirstAsync(it => it.Id == dto.Id && it.IsDel == 0);
                 if (_DelegationEnData != null)
                 if (_DelegationEnData != null)
                 {
                 {
                     return Ok(JsonView(true, "查询成功!", _DelegationEnData));
                     return Ok(JsonView(true, "查询成功!", _DelegationEnData));
                 }
                 }
-                return Ok(JsonView(true, "暂无数据!",_DelegationEnData));
+                return Ok(JsonView(true, "暂无数据!", _DelegationEnData));
             }
             }
             catch (Exception ex)
             catch (Exception ex)
             {
             {
@@ -2043,21 +2077,21 @@ namespace OASystem.API.Controllers
         {
         {
             try
             try
             {
             {
-                List<Grp_DelegationInfo> grp_Delegations = await _sqlSugar.Queryable<Grp_DelegationInfo>().Where(a => a.IsDel==0).OrderBy(a=>a.Id,OrderByType.Desc).ToListAsync();
+                List<Grp_DelegationInfo> grp_Delegations = await _sqlSugar.Queryable<Grp_DelegationInfo>().Where(a => a.IsDel == 0).OrderBy(a => a.Id, OrderByType.Desc).ToListAsync();
                 List<Crm_DeleClient> crm_Deles = new List<Crm_DeleClient>();
                 List<Crm_DeleClient> crm_Deles = new List<Crm_DeleClient>();
-                if (dto.DiId==0)
+                if (dto.DiId == 0)
                 {
                 {
-                   crm_Deles = await _sqlSugar.Queryable<Crm_DeleClient>().Where(a => a.DiId==grp_Delegations[0].Id && a.IsDel==0).ToListAsync();
+                    crm_Deles = await _sqlSugar.Queryable<Crm_DeleClient>().Where(a => a.DiId == grp_Delegations[0].Id && a.IsDel == 0).ToListAsync();
                 }
                 }
                 else
                 else
                 {
                 {
-                   crm_Deles = await _sqlSugar.Queryable<Crm_DeleClient>().Where(a => a.DiId==dto.DiId && a.IsDel==0).ToListAsync();
+                    crm_Deles = await _sqlSugar.Queryable<Crm_DeleClient>().Where(a => a.DiId == dto.DiId && a.IsDel == 0).ToListAsync();
                 }
                 }
-                
-                return Ok(JsonView(true, "查询成功!",new
+
+                return Ok(JsonView(true, "查询成功!", new
                 {
                 {
                     deleClient = crm_Deles,
                     deleClient = crm_Deles,
-                    delegations= grp_Delegations
+                    delegations = grp_Delegations
                 }));
                 }));
             }
             }
             catch (Exception ex)
             catch (Exception ex)
@@ -2078,122 +2112,122 @@ namespace OASystem.API.Controllers
             try
             try
             {
             {
                 Dictionary<string, string> transDic = new Dictionary<string, string>();
                 Dictionary<string, string> transDic = new Dictionary<string, string>();
-                List<Crm_DeleClient> crm_DeleClients = await _sqlSugar.Queryable<Crm_DeleClient>().Where(a => a.DiId==dto.DiId && a.IsDel==0).ToListAsync();
+                List<Crm_DeleClient> crm_DeleClients = await _sqlSugar.Queryable<Crm_DeleClient>().Where(a => a.DiId == dto.DiId && a.IsDel == 0).ToListAsync();
                 List<string> texts = new List<string>();
                 List<string> texts = new List<string>();
-                if (crm_DeleClients.Count!=0)
+                if (crm_DeleClients.Count != 0)
                 {
                 {
 
 
-                foreach (Crm_DeleClient item in crm_DeleClients)
-                {
-
-                    if (!string.IsNullOrWhiteSpace(item.Pinyin))
-                    {
-                        transDic.Add(item.LastName+item.FirstName, item.Pinyin);
-                    }
-                    else
+                    foreach (Crm_DeleClient item in crm_DeleClients)
                     {
                     {
-                        string name = item.LastName + item.FirstName;
-                        texts.Add(name);
-                    }
 
 
-                    if (!string.IsNullOrEmpty(item.Job) && !texts.Contains(item.Job))
-                    {
-                        if (!transDic.ContainsKey(item.Job))
+                        if (!string.IsNullOrWhiteSpace(item.Pinyin))
                         {
                         {
-                            texts.Add(item.Job);
+                            transDic.Add(item.LastName + item.FirstName, item.Pinyin);
                         }
                         }
-                    }
-                    if (item.CrmCompanyId!=0)
-                    {
-                        Crm_CustomerCompany crm_Customer = await _sqlSugar.Queryable<Crm_CustomerCompany>().FirstAsync(a => a.Id==item.CrmCompanyId && a.IsDel==0);
-                        if (!transDic.ContainsKey(crm_Customer.CompanyName))
+                        else
+                        {
+                            string name = item.LastName + item.FirstName;
+                            texts.Add(name);
+                        }
+
+                        if (!string.IsNullOrEmpty(item.Job) && !texts.Contains(item.Job))
+                        {
+                            if (!transDic.ContainsKey(item.Job))
+                            {
+                                texts.Add(item.Job);
+                            }
+                        }
+                        if (item.CrmCompanyId != 0)
                         {
                         {
-                            texts.Add(crm_Customer.CompanyName);
+                            Crm_CustomerCompany crm_Customer = await _sqlSugar.Queryable<Crm_CustomerCompany>().FirstAsync(a => a.Id == item.CrmCompanyId && a.IsDel == 0);
+                            if (!transDic.ContainsKey(crm_Customer.CompanyName))
+                            {
+                                texts.Add(crm_Customer.CompanyName);
+                            }
                         }
                         }
                     }
                     }
-                }
-                List<TranslateResult> transData = _airTicketResRep.ReTransBatch(texts, "en");
-                if (transData.Count > 0)
-                {
-                    foreach (TranslateResult item in transData)
+                    List<TranslateResult> transData = _airTicketResRep.ReTransBatch(texts, "en");
+                    if (transData.Count > 0)
                     {
                     {
-                        if (!transDic.ContainsKey(item.Query))
+                        foreach (TranslateResult item in transData)
                         {
                         {
+                            if (!transDic.ContainsKey(item.Query))
+                            {
 
 
-                            transDic.Add(item.Query, item.Translation);
+                                transDic.Add(item.Query, item.Translation);
+                            }
                         }
                         }
                     }
                     }
-                }
-                List<guestList> list = new List<guestList>();
-                foreach (Crm_DeleClient dele in crm_DeleClients)
-                {
-                    guestList guestList = new guestList();
-
-                    if (!string.IsNullOrWhiteSpace(dele.Pinyin))
-                    {
-                        guestList.Name = dele.Pinyin;
-                    }
-                    else
-                    {
-                        string Name = transDic.Where(s => s.Key == dele.LastName + dele.FirstName).FirstOrDefault().Value;
-                        guestList.Name = Name;
-                    }
-                    if (dele.Sex ==0)
+                    List<guestList> list = new List<guestList>();
+                    foreach (Crm_DeleClient dele in crm_DeleClients)
                     {
                     {
-                        guestList.Sex = "Male";
-                    }
-                    else if (dele.Sex == 1)
-                    {
-                        guestList.Sex = "Female";
-                    }
-                    guestList.DOB = dele.BirthDay.Replace('-', '.');
-                    Crm_CustomerCompany crm_Customer = await _sqlSugar.Queryable<Crm_CustomerCompany>().FirstAsync(a => a.Id==dele.CrmCompanyId && a.IsDel==0);
-                    string jobName = transDic.Where(s => s.Key == crm_Customer.CompanyName).FirstOrDefault().Value + " "+transDic.Where(s => s.Key == dele.Job).FirstOrDefault().Value;
+                        guestList guestList = new guestList();
 
 
-                    guestList.Job = jobName;
-                    list.Add(guestList);
-                }
+                        if (!string.IsNullOrWhiteSpace(dele.Pinyin))
+                        {
+                            guestList.Name = dele.Pinyin;
+                        }
+                        else
+                        {
+                            string Name = transDic.Where(s => s.Key == dele.LastName + dele.FirstName).FirstOrDefault().Value;
+                            guestList.Name = Name;
+                        }
+                        if (dele.Sex == 0)
+                        {
+                            guestList.Sex = "Male";
+                        }
+                        else if (dele.Sex == 1)
+                        {
+                            guestList.Sex = "Female";
+                        }
+                        guestList.DOB = dele.BirthDay.Replace('-', '.');
+                        Crm_CustomerCompany crm_Customer = await _sqlSugar.Queryable<Crm_CustomerCompany>().FirstAsync(a => a.Id == dele.CrmCompanyId && a.IsDel == 0);
+                        string jobName = transDic.Where(s => s.Key == crm_Customer.CompanyName).FirstOrDefault().Value + " " + transDic.Where(s => s.Key == dele.Job).FirstOrDefault().Value;
 
 
-                //载入模板
-                Document doc = new Document(AppSettingsHelper.Get("WordBasePath") + "Template/邀请函模板0210.docx");
-                DocumentBuilder builder = new DocumentBuilder(doc);
+                        guestList.Job = jobName;
+                        list.Add(guestList);
+                    }
 
 
-                //获取word里所有表格
-                NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true);
+                    //载入模板
+                    Document doc = new Document(AppSettingsHelper.Get("WordBasePath") + "Template/邀请函模板0210.docx");
+                    DocumentBuilder builder = new DocumentBuilder(doc);
 
 
-                //获取所填表格的序数
-                Aspose.Words.Tables.Table tableOne = allTables[0] as Aspose.Words.Tables.Table;
+                    //获取word里所有表格
+                    NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true);
 
 
-                var rowStart = tableOne.Rows[0]; //获取第1行
+                    //获取所填表格的序数
+                    Aspose.Words.Tables.Table tableOne = allTables[0] as Aspose.Words.Tables.Table;
 
 
-                //循环赋值
-                for (int i = 0; i < list.Count; i++)
-                {
-                    builder.MoveToCell(0, i + 1, 0, 0);
-                    builder.Write(list[i].Name.ToString());
+                    var rowStart = tableOne.Rows[0]; //获取第1行
 
 
-                    builder.MoveToCell(0, i + 1, 1, 0);
-                    builder.Write(list[i].Sex.ToString());
+                    //循环赋值
+                    for (int i = 0; i < list.Count; i++)
+                    {
+                        builder.MoveToCell(0, i + 1, 0, 0);
+                        builder.Write(list[i].Name.ToString());
 
 
-                    builder.MoveToCell(0, i + 1, 2, 0);
-                    builder.Write(list[i].DOB.ToString());
+                        builder.MoveToCell(0, i + 1, 1, 0);
+                        builder.Write(list[i].Sex.ToString());
 
 
-                    builder.MoveToCell(0, i + 1, 3, 0);
-                    builder.Write(list[i].Job.ToString());
-                }
+                        builder.MoveToCell(0, i + 1, 2, 0);
+                        builder.Write(list[i].DOB.ToString());
 
 
+                        builder.MoveToCell(0, i + 1, 3, 0);
+                        builder.Write(list[i].Job.ToString());
+                    }
 
 
-                //删除多余行
-                while (tableOne.Rows.Count > list.Count + 1)
-                {
-                    tableOne.Rows.RemoveAt(list.Count + 1);
-                }
-                var fileDir = AppSettingsHelper.Get("GrpFileBasePath");
-                string fileName = "邀请函"+DateTime.Now.ToString("yyyy-MM-dd")+".docx";
-                string filePath = fileDir + $@"商邀相关文件/{fileName}";
-                doc.Save(filePath);
-                string Url= AppSettingsHelper.Get("WordBaseUrl") + "Office/GrpFile/商邀相关文件"+fileName;
-                return Ok(JsonView(true, "成功!", Url));
+
+                    //删除多余行
+                    while (tableOne.Rows.Count > list.Count + 1)
+                    {
+                        tableOne.Rows.RemoveAt(list.Count + 1);
+                    }
+                    var fileDir = AppSettingsHelper.Get("GrpFileBasePath");
+                    string fileName = "邀请函" + DateTime.Now.ToString("yyyy-MM-dd") + ".docx";
+                    string filePath = fileDir + $@"商邀相关文件/{fileName}";
+                    doc.Save(filePath);
+                    string Url = AppSettingsHelper.Get("WordBaseUrl") + "Office/GrpFile/商邀相关文件" + fileName;
+                    return Ok(JsonView(true, "成功!", Url));
 
 
                 }
                 }
                 else
                 else
@@ -2251,7 +2285,7 @@ namespace OASystem.API.Controllers
 
 
                 var unite = dayAndCost.Where(a => nationalTravelFee.Any(b => a.Place.Trim() == b.City)).ToList(); //交集
                 var unite = dayAndCost.Where(a => nationalTravelFee.Any(b => a.Place.Trim() == b.City)).ToList(); //交集
 
 
-                var merge = dayAndCost.Where(a =>! nationalTravelFee.Any(b => a.Place.Trim() == b.City)).ToList(); //差集
+                var merge = dayAndCost.Where(a => !nationalTravelFee.Any(b => a.Place.Trim() == b.City)).ToList(); //差集
 
 
                 foreach (var item in unite) //处理交集数据
                 foreach (var item in unite) //处理交集数据
                 {
                 {
@@ -2312,7 +2346,8 @@ namespace OASystem.API.Controllers
                 //var nationalTravelFeeData = await _sqlSugar.SqlQueryable<NationalTravelFeeInfoView>(nationalTravelFeeSql).ToListAsync();
                 //var nationalTravelFeeData = await _sqlSugar.SqlQueryable<NationalTravelFeeInfoView>(nationalTravelFeeSql).ToListAsync();
 
 
 
 
-                return Ok(JsonView(true, "查询成功!",new {
+                return Ok(JsonView(true, "查询成功!", new
+                {
                     GroupNameData = groupNameData.Data,
                     GroupNameData = groupNameData.Data,
                     CurrencyData = currencyData,
                     CurrencyData = currencyData,
                     //NationalTravelFeeData = nationalTravelFeeData
                     //NationalTravelFeeData = nationalTravelFeeData
@@ -2374,7 +2409,7 @@ namespace OASystem.API.Controllers
                 return Ok(JsonView(false, ex.Message));
                 return Ok(JsonView(false, ex.Message));
             }
             }
         }
         }
-        
+
         /// <summary>
         /// <summary>
         /// 团组模块 - 出入境费用 - 子项删除
         /// 团组模块 - 出入境费用 - 子项删除
         /// </summary>
         /// </summary>
@@ -2431,7 +2466,7 @@ namespace OASystem.API.Controllers
                         cityData.Remove(otherData);
                         cityData.Remove(otherData);
                         cityData.Add(otherData);
                         cityData.Add(otherData);
                     }
                     }
-                    
+
 
 
                     nationalTravelFeeData1.Add(new
                     nationalTravelFeeData1.Add(new
                     {
                     {
@@ -2441,7 +2476,7 @@ namespace OASystem.API.Controllers
                 }
                 }
 
 
                 sw.Stop();
                 sw.Stop();
-                return Ok(JsonView(true, "查询成功!耗时:"+ sw.ElapsedMilliseconds+"ms", nationalTravelFeeData1));
+                return Ok(JsonView(true, "查询成功!耗时:" + sw.ElapsedMilliseconds + "ms", nationalTravelFeeData1));
             }
             }
             catch (Exception ex)
             catch (Exception ex)
             {
             {

+ 13 - 0
OASystem/OASystem.Domain/Dtos/Groups/VisaDto.cs

@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Groups
+{
+    public class IOS_VisaDto:DtoBase
+    {
+        public int SearchType { get; set; }
+    }
+}

+ 91 - 1
OASystem/OASystem.Domain/Entities/Groups/Grp_VisaProgress.cs

@@ -10,7 +10,7 @@ namespace OASystem.Domain.Entities.Groups
     /// 签证进度表
     /// 签证进度表
     /// </summary>
     /// </summary>
     [SugarTable("Grp_VisaProgress")]
     [SugarTable("Grp_VisaProgress")]
-    public class Grp_VisaProgress:EntityBase
+    public class Grp_VisaProgress : EntityBase
     {
     {
         /// <summary>
         /// <summary>
         /// 团组表Id
         /// 团组表Id
@@ -88,4 +88,94 @@ namespace OASystem.Domain.Entities.Groups
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string Receiver { get; set; }
         public string Receiver { get; set; }
     }
     }
+
+
+    /// <summary>
+    /// 签证进度客户表
+    /// 同团组下同一客户在不同国家数据是重复的
+    /// </summary>
+    [SugarTable("Grp_VisaProgressCustomer")]
+    public class Grp_VisaProgressCustomer : EntityBase
+    {
+        /// <summary>
+        /// 团组表Id
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 签证进度Id
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int VisaProgressId { get; set; }
+
+        /// <summary>
+        /// 客户表Id
+        /// 因使用旧版OA原因,暂时没有值
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int CustomerId { get; set; }
+
+        /// <summary>
+        /// 客户姓名
+        /// 正式使用新版OA后弃用
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDataType = "varchar(50)")]
+        public string CustomerName { get; set; }
+
+        /// <summary>
+        /// 该国家签证进度
+        /// 0:未完成,1:已完成,2:忽略,3:签证未通过
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDataType = "int")]
+        public int WorkStatus { get; set; }
+
+        /// <summary>
+        /// 最后操作人Id
+        /// 新增时为空
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int LastOperatorId { get; set; }
+
+        /// <summary>
+        /// 最后操作时间
+        /// 新增时为空
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "datetime")]
+        public DateTime LastOperatorDt { get; set; }
+    }
+
+    [SugarTable("Grp_VisaProgressCustomerPicture")]
+    public class Grp_VisaProgressCustomerPicture : EntityBase
+    {
+        /// <summary>
+        /// 签证进度客户表Id
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int VisaProgressCustomerId { get; set; }
+
+        /// <summary>
+        /// 图片名称
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDataType = "varchar(100)")]
+        public string PicName { get; set; }
+
+        /// <summary>
+        /// 图片路径
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDataType = "nvarchar(200)")]
+        public string PicPath { get; set; }
+
+        /// <summary>
+        /// 图片所属签证上传类型
+        /// 0:护照首页
+        /// 1:批件
+        /// 2:免签证明
+        /// 3:派遣函红头文件
+        /// 4:签证页
+        /// 5:发票
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDataType = "int")]
+        public int PicType { get; set; }
+    }
 }
 }

+ 27 - 0
OASystem/OASystem.Domain/ViewModels/Groups/Grp_DelegationVisaView.cs

@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.Groups
+{
+    public class DelegationVisaViewList : ListViewBase<Grp_DelegationVisaView>
+    { 
+        
+    }
+
+    public class Grp_DelegationVisaView
+    {
+        public int RowNumber { get; set; }
+        public int DiId { get; set; }
+        public string TeamName { get; set; }
+        public string ClientUnit  { get; set; }
+        public string ClientName { get; set; }
+        public string TeamLev { get; set; }
+        public string VisitDate { get; set; }
+        public int VisitDays { get; set; }
+        public int VisitPNumber { get; set; }
+        public string CompletePNumber { get; set; } = "已完成0人";
+    }
+}

+ 57 - 0
OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationVisaRepository.cs

@@ -0,0 +1,57 @@
+using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Entities.Groups;
+using OASystem.Domain.ViewModels.Groups;
+using OASystem.Domain.ViewModels.Resource;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Infrastructure.Repositories.Groups
+{
+    public class DelegationVisaRepository : BaseRepository<Grp_VisaProgress, Grp_DelegationVisaView>
+    {
+        public DelegationVisaRepository(SqlSugarClient sqlSugar) : base(sqlSugar)
+        {
+        }
+
+
+        public DelegationVisaViewList GetDelegationList(IOS_VisaDto _dto)
+        {
+            string sqlWhere = string.Format(" Where IsDel=0 ");
+
+            int currPIndex = (((_dto.PageIndex > 0) ? (_dto.PageIndex - 1) : 0) * _dto.PageSize) + 1;
+            int currPSize = (((_dto.PageIndex > 0) ? (_dto.PageIndex - 1) : 0) + 1) * _dto.PageSize;
+
+            ChangeDataBase(DBEnum.OA2014DB);
+
+            string sql = string.Format(@" Select * From(Select ROW_NUMBER() Over(order By Id desc) as RowNumber, Id as DiId,
+TeamName,ClientUnit,ClientName,TeamLev,VisitDate,VisitDays,VisitPNumber
+From DelegationInfo With(Nolock) {2}
+) as tb Where tb.RowNumber Between {0} And {1} ", currPIndex, currPSize, sqlWhere);
+            DelegationVisaViewList rst = new DelegationVisaViewList();
+            rst.CurrPageIndex = currPIndex;
+            rst.CurrPageSize = currPSize;
+            List<Grp_DelegationVisaView> dataSource = _sqlSugar.SqlQueryable<Grp_DelegationVisaView>(sql).ToList();
+
+            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();
+
+                item.CompletePNumber = string.Format(@"已完成{0}人", listComplete.Count);
+            }
+            rst.DataList = new List<Grp_DelegationVisaView>(dataSource);
+
+            if (rst.DataList.Count > 0)
+            {
+                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;
+            }
+
+            return rst;
+        }
+    }
+}