Browse Source

新增导出邀请函

wangh 1 year ago
parent
commit
d192352b6c

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

@@ -19,6 +19,9 @@ using Cell = Aspose.Words.Tables.Cell;
 using Row = Aspose.Words.Tables.Row;
 using System.Runtime.Intrinsics.Arm;
 using Microsoft.AspNetCore.Mvc.Filters;
+using OASystem.Domain.Entities.Customer;
+using NPOI.SS.Formula.Functions;
+using OASystem.Domain.Dtos.CRM;
 
 namespace OASystem.API.Controllers
 {
@@ -1861,12 +1864,12 @@ namespace OASystem.API.Controllers
         {
             try
             {
-                List<Grp_DelegationEnData> grp_DelegationEns = await _sqlSugar.Queryable<Grp_DelegationEnData>().Where(a => a.IsDel == 0 && a.Area==dto.Area && a.Job==dto.Job).ToListAsync();
-                if (grp_DelegationEns.Count == 0)
+                Result groupData = await _delegationEnDataRep.QueryDelegationEnData(dto);
+                if (groupData.Code != 0)
                 {
-                    return Ok(JsonView(true, "暂无数据!", grp_DelegationEns));
+                    return Ok(JsonView(false, groupData.Msg));
                 }
-                return Ok(JsonView(true, "查询成功!", grp_DelegationEns));
+                return Ok(JsonView(true, groupData.Msg, groupData.Data));
             }
             catch (Exception ex)
             {
@@ -1899,6 +1902,30 @@ namespace OASystem.API.Controllers
             }
         }
         /// <summary>
+        /// 团组英文资料Id查询数据
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> QueryDelegationEnDataById(QueryDelegationEnDataByIdDto dto)
+        {
+            try
+            {
+                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));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
+        /// <summary>
         /// 团组英文资料删除
         /// </summary>
         /// <param name="dto"></param>
@@ -1923,5 +1950,183 @@ namespace OASystem.API.Controllers
             }
         }
         #endregion
+
+        #region 导出邀请函
+        /// <summary>
+        /// 导出邀请函页面初始化
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> QueryinvitationLetter(DecreasePaymentsListDto dto)
+        {
+            try
+            {
+                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)
+                {
+                   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();
+                }
+                
+                return Ok(JsonView(true, "查询成功!",new
+                {
+                    deleClient = crm_Deles,
+                    delegations= grp_Delegations
+                }));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
+        /// <summary>
+        /// 导出邀请函
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> invitationLetter(DecreasePaymentsListDto dto)
+        {
+            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<string> texts = new List<string>();
+                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
+                    {
+                        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)
+                    {
+                        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)
+                    {
+                        if (!transDic.ContainsKey(item.Query))
+                        {
+
+                            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)
+                    {
+                        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.Job = jobName;
+                    list.Add(guestList);
+                }
+
+                //载入模板
+                Document doc = new Document(AppSettingsHelper.Get("WordBasePath") + "Template/邀请函模板0210.docx");
+                DocumentBuilder builder = new DocumentBuilder(doc);
+
+                //获取word里所有表格
+                NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true);
+
+                //获取所填表格的序数
+                Aspose.Words.Tables.Table tableOne = allTables[0] as Aspose.Words.Tables.Table;
+
+                var rowStart = tableOne.Rows[0]; //获取第1行
+
+                //循环赋值
+                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, 1, 0);
+                    builder.Write(list[i].Sex.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));
+
+                }
+                else
+                {
+                    return Ok(JsonView(false, "失败,该团组没有客户名单!"));
+                }
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
+        #endregion
     }
 }

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

@@ -121,6 +121,4 @@
   "GrpFileBaseUrl": "http://132.232.92.186:24/",
   "GrpFileBasePath": "C:/Server/File/OA2023/Office/GrpFile/"
 
-
-
 }

+ 1 - 0
OASystem/OASystem.Domain/Dtos/CRM/ClientCompanyDto.cs

@@ -24,6 +24,7 @@ namespace OASystem.Domain.Dtos.CRM
         /// 客户公司名称
         /// </summary>
         public string CompanyName { get; set; }
+        
         /// <summary>
         /// 公司地址
         /// </summary>

+ 21 - 0
OASystem/OASystem.Domain/Dtos/CRM/DeleClientAddDto.cs

@@ -39,6 +39,10 @@ namespace OASystem.Domain.Dtos.CRM
         /// </summary>
         public int Id { get; set; }
         /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+        /// <summary>
         /// 中文姓名
         /// </summary>
 
@@ -784,4 +788,21 @@ namespace OASystem.Domain.Dtos.CRM
         public int Id { get; set; }
         public int DeleteUserId { get; set; }
     }
+    public class guestList
+    {
+        /// <summary>
+        /// 姓名
+        /// </summary>
+        public string Name { get; set; }
+        /// <summary>
+        /// 性别
+        /// </summary>
+        public string Sex { get; set; }
+        /// <summary>
+        /// 出身日期
+        /// </summary>
+        public string DOB { get; set; }
+
+        public string Job { get; set; }
+    }
 }

+ 4 - 2
OASystem/OASystem.Domain/Dtos/Groups/QueryDelegationEnDataDto.cs

@@ -52,12 +52,14 @@ namespace OASystem.Domain.Dtos.Groups
         public string DelegationSettingEn { get; set; }
     }
 
-    public class TranslationOneKeyDto 
+    public class QueryDelegationEnDataByIdDto
     {
         /// <summary>
         /// 待翻译的文本
         /// </summary>
-        public string? TranslationOneKeyStr { get; set; }
+        public int Id { get; set; }
 
     }
+
+
 }

+ 7 - 2
OASystem/OASystem.Domain/Entities/Customer/Crm_DeleClient.cs

@@ -14,12 +14,17 @@ namespace OASystem.Domain.Entities.Customer
     public class Crm_DeleClient:EntityBase
     {
         /// <summary>
-        /// 中文姓名
+        /// 团组Id
+        /// </summary>
+        [SugarColumn(IsNullable =true,ColumnDataType ="int")]
+        public int DiId { get; set; }
+        /// <summary>
+        /// 中文姓
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string LastName { get; set; }
         /// <summary>
-        /// 英文姓名
+        /// 中文
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string FirstName { get; set; }

+ 1 - 0
OASystem/OASystem.Infrastructure/Repositories/CRM/VisaDeleClientRepository.cs

@@ -185,6 +185,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
                     deleId=dto.DeleClient.Id;
                     bool res = await UpdateAsync(a => a.Id == dto.DeleClient.Id, a => new Crm_DeleClient
                     {
+                        DiId = dto.DeleClient.DiId,
                         LastName = dto.DeleClient.LastName,
                         FirstName = dto.DeleClient.FirstName,
                         OldName = dto.DeleClient.OldName,

+ 39 - 0
OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationEnDataRepository.cs

@@ -84,5 +84,44 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 return result = new Result() { Code = -2, Msg = "程序错误!" };
             }
         }
+
+        public async Task<Result> QueryDelegationEnData(QueryDelegationEnDataDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+            try
+            {
+                string sqlWhere = string.Empty;
+                if (!string.IsNullOrWhiteSpace(dto.Area))
+                {
+                    sqlWhere += string.Format(@"And Area like '%{0}%'", dto.Area);
+                }
+                if (!string.IsNullOrWhiteSpace(dto.Job))
+                {
+                    sqlWhere += string.Format(@"And Job like '%{0}%'", dto.Job);
+                }
+                sqlWhere += string.Format(@"And IsDel={0}", 0);
+
+                if (!string.IsNullOrEmpty(sqlWhere.Trim()))
+                {
+                    Regex r = new Regex("And");
+                    sqlWhere = r.Replace(sqlWhere, "Where", 1);
+                }
+                string sql = string.Format(@"select * from Grp_DelegationEnData {0} order by CreateTime desc", sqlWhere);
+                List<Grp_DelegationEnData> askDatd = await _sqlSugar.SqlQueryable<Grp_DelegationEnData>(sql).ToListAsync();
+                if (askDatd.Count != 0 && askDatd.Count!=0)
+                {
+                    result = new Result() { Code = 0, Msg = "查询成功!", Data =askDatd };
+                }
+                else
+                {
+                    result = new Result() { Code = 0, Msg = "暂无数据!", Data =askDatd };
+                }
+            }
+            catch (Exception ex)
+            {
+                result = new Result() { Code = -2, Msg = "未知错误" };
+            }
+            return result;
+        }
     }
 }