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(Air_TicketBlackCode),
     //typeof(Pm_WageSheet)       //人事模块 工资表单
+    typeof(Grp_VisaProgressCustomer),
+    typeof(Grp_VisaProgressCustomerPicture)
 });
 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 System.Diagnostics;
 using MathNet.Numerics.Statistics.Mcmc;
+using AlibabaCloud.OpenApiClient.Models;
 
 namespace OASystem.API.Controllers
 {
@@ -42,6 +43,7 @@ namespace OASystem.API.Controllers
         private readonly DecreasePaymentsRepository _decreasePaymentsRep;
         private readonly InvitationOfficialActivitiesRepository _InvitationOfficialActivitiesRep;
         private readonly DelegationEnDataRepository _delegationEnDataRep;
+        private readonly DelegationVisaRepository _delegationVisaRep;
         private readonly SqlSugarClient _sqlSugar;
         private string url;
         private string path;
@@ -50,7 +52,8 @@ 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)
+            InvitationOfficialActivitiesRepository InvitationOfficialActivitiesRep, DelegationEnDataRepository delegationEnDataRep, EnterExitCostRepository enterExitCostRep
+            ,DelegationVisaRepository delegationVisaRep)
         {
             _mapper = mapper;
             _grpScheduleRep = grpScheduleRep;
@@ -68,6 +71,7 @@ namespace OASystem.API.Controllers
             _InvitationOfficialActivitiesRep = InvitationOfficialActivitiesRep;
             _delegationEnDataRep = delegationEnDataRep;
             _enterExitCostRep = enterExitCostRep;
+            _delegationVisaRep = delegationVisaRep;
         }
 
         #region 流程管控
@@ -220,7 +224,7 @@ namespace OASystem.API.Controllers
 
             return Ok(JsonView(groupData.Data));
         }
-       
+
 
         /// <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
 
@@ -888,8 +922,8 @@ namespace OASystem.API.Controllers
         {
             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>();
                     foreach (var item in crm_Groups)
@@ -898,7 +932,7 @@ namespace OASystem.API.Controllers
                         {
                             Id = item.Id,
                             Pinyin = item.Pinyin,
-                            Name = item.LastName+item.FirstName
+                            Name = item.LastName + item.FirstName
                         };
                         Customer.Add(data);
                     }
@@ -927,7 +961,7 @@ namespace OASystem.API.Controllers
                 var res = await _airTicketResRep.SoftDeleteByIdAsync<Grp_AirTicketReservations>(dto.Id.ToString(), dto.DeleteUserId);
                 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,
                         DeleteUserId = dto.DeleteUserId,
@@ -1857,7 +1891,7 @@ namespace OASystem.API.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPost]
-        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] 
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> InvitationOfficialActivitiesById(InvitationOfficialActivitiesByIdDto dto)
         {
             try
@@ -1888,7 +1922,7 @@ namespace OASystem.API.Controllers
             {
                 Result groupData = await _InvitationOfficialActivitiesRep.OpInvitationOfficialActivities(dto);
                 if (groupData.Code != 0)
-                { 
+                {
                     return Ok(JsonView(false, groupData.Msg));
                 }
                 return Ok(JsonView(true, groupData.Msg, groupData.Data));
@@ -1992,12 +2026,12 @@ namespace OASystem.API.Controllers
         {
             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)
                 {
                     return Ok(JsonView(true, "查询成功!", _DelegationEnData));
                 }
-                return Ok(JsonView(true, "暂无数据!",_DelegationEnData));
+                return Ok(JsonView(true, "暂无数据!", _DelegationEnData));
             }
             catch (Exception ex)
             {
@@ -2043,21 +2077,21 @@ namespace OASystem.API.Controllers
         {
             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>();
-                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
                 {
-                   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,
-                    delegations= grp_Delegations
+                    delegations = grp_Delegations
                 }));
             }
             catch (Exception ex)
@@ -2078,122 +2112,122 @@ namespace OASystem.API.Controllers
             try
             {
                 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>();
-                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
@@ -2251,7 +2285,7 @@ namespace OASystem.API.Controllers
 
                 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) //处理交集数据
                 {
@@ -2312,7 +2346,8 @@ namespace OASystem.API.Controllers
                 //var nationalTravelFeeData = await _sqlSugar.SqlQueryable<NationalTravelFeeInfoView>(nationalTravelFeeSql).ToListAsync();
 
 
-                return Ok(JsonView(true, "查询成功!",new {
+                return Ok(JsonView(true, "查询成功!", new
+                {
                     GroupNameData = groupNameData.Data,
                     CurrencyData = currencyData,
                     //NationalTravelFeeData = nationalTravelFeeData
@@ -2374,7 +2409,7 @@ namespace OASystem.API.Controllers
                 return Ok(JsonView(false, ex.Message));
             }
         }
-        
+
         /// <summary>
         /// 团组模块 - 出入境费用 - 子项删除
         /// </summary>
@@ -2431,7 +2466,7 @@ namespace OASystem.API.Controllers
                         cityData.Remove(otherData);
                         cityData.Add(otherData);
                     }
-                    
+
 
                     nationalTravelFeeData1.Add(new
                     {
@@ -2441,7 +2476,7 @@ namespace OASystem.API.Controllers
                 }
 
                 sw.Stop();
-                return Ok(JsonView(true, "查询成功!耗时:"+ sw.ElapsedMilliseconds+"ms", nationalTravelFeeData1));
+                return Ok(JsonView(true, "查询成功!耗时:" + sw.ElapsedMilliseconds + "ms", nationalTravelFeeData1));
             }
             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>
     [SugarTable("Grp_VisaProgress")]
-    public class Grp_VisaProgress:EntityBase
+    public class Grp_VisaProgress : EntityBase
     {
         /// <summary>
         /// 团组表Id
@@ -88,4 +88,94 @@ namespace OASystem.Domain.Entities.Groups
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         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;
+        }
+    }
+}