|
@@ -1757,7 +1757,7 @@ Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _m
|
|
|
/// <returns></returns>
|
|
|
[HttpPost]
|
|
|
[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
- public async Task<IActionResult> OfficialActivitiesFileDownload(AskFileDownloadDto dto)
|
|
|
+ public async Task<IActionResult> OfficialActivitiesFileDownload(OfficialActivitiesFileDownload dto)
|
|
|
{
|
|
|
#region 参数验证
|
|
|
|
|
@@ -1768,9 +1768,10 @@ Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _m
|
|
|
//团组基础信息
|
|
|
var groupInfo = _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0 && it.Id == dto.DiId).First();
|
|
|
if (groupInfo == null) return Ok(JsonView(false, "该团组基本信息不存在"));
|
|
|
+ groupInfo.VisitCountry = groupInfo.VisitCountry.Replace("|", "、");
|
|
|
|
|
|
//团组公务信息
|
|
|
- var obDatas = _sqlSugar.Queryable<Res_OfficialActivities>().Where(it => it.IsDel == 0 && it.DiId == dto.DiId).ToList();
|
|
|
+ var obDatas = _sqlSugar.Queryable<Res_OfficialActivities>().Where(it => it.IsDel == 0 && it.DiId == dto.DiId).OrderBy(it => it.Date).ToList();
|
|
|
if (obDatas.Count < 1) return Ok(JsonView(false, "请先录入公务信息!"));
|
|
|
|
|
|
//请示数据库范例数据
|
|
@@ -1780,100 +1781,178 @@ Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _m
|
|
|
List<TourClientListByDiIdView> guestInfos = new List<TourClientListByDiIdView>();
|
|
|
if (guestResult.Result.Code == 0) guestInfos = guestResult.Result.Data as List<TourClientListByDiIdView>;
|
|
|
|
|
|
- //载入模板
|
|
|
- string tempPath = AppSettingsHelper.Get("WordBasePath") + "Template/省外办出访请示 - 模板.docx";
|
|
|
- var doc = new Document(tempPath);
|
|
|
- DocumentBuilder builder = new DocumentBuilder(doc);
|
|
|
+ if (dto.FileType == 1)
|
|
|
+ {
|
|
|
+ //载入模板
|
|
|
+ string tempPath = AppSettingsHelper.Get("WordBasePath") + "Template/省外办出访请示 - 模板.docx";
|
|
|
+ var doc = new Document(tempPath);
|
|
|
+ DocumentBuilder builder = new DocumentBuilder(doc);
|
|
|
|
|
|
- //键值对存放数据
|
|
|
- Dictionary<string, string> dic = new Dictionary<string, string>();
|
|
|
+ //键值对存放数据
|
|
|
+ Dictionary<string, string> dic = new Dictionary<string, string>();
|
|
|
|
|
|
- //××(组团单位):接团客户信息团组
|
|
|
- dic.Add("GroupClient", groupInfo.ClientUnit);
|
|
|
+ //××(组团单位):接团客户信息团组
|
|
|
+ dic.Add("GroupClient", groupInfo.ClientUnit);
|
|
|
|
|
|
- //关于××(职务、姓名)等×人赴××(国家或地区)进行×××(出访目的)的请示
|
|
|
- string guestName = "";
|
|
|
- string guestJob = "";
|
|
|
- string guestInfoStr = "";
|
|
|
- var guestFirstInfo = guestInfos.FirstOrDefault();
|
|
|
- if (guestFirstInfo != null)
|
|
|
- {
|
|
|
- guestName = guestFirstInfo.LastName + guestFirstInfo.FirstName;
|
|
|
- guestJob = guestFirstInfo.Job;
|
|
|
- guestInfoStr = $@"{guestJob}、{guestName}";
|
|
|
- }
|
|
|
- string askTitle = $@"关于{guestInfoStr}等{guestInfos.Count}人赴{groupInfo.VisitCountry}进行{groupInfo.VisitPurpose}的请示";
|
|
|
- dic.Add("AskTitle", askTitle);
|
|
|
+ //关于××(职务、姓名)等×人赴××(国家或地区)进行×××(出访目的)的请示
|
|
|
+ string guestName = "";
|
|
|
+ string guestJob = "";
|
|
|
+ string guestInfoStr = "";
|
|
|
+ var guestFirstInfo = guestInfos.FirstOrDefault();
|
|
|
+ if (guestFirstInfo != null)
|
|
|
+ {
|
|
|
+ guestName = guestFirstInfo.LastName + guestFirstInfo.FirstName;
|
|
|
+ guestJob = guestFirstInfo.Job;
|
|
|
+ guestInfoStr = $@"{guestJob}、{guestName}";
|
|
|
+ }
|
|
|
+ string askTitle = $@"关于{guestInfoStr}等{guestInfos.Count}人赴{groupInfo.VisitCountry}进行{groupInfo.VisitPurpose}的请示";
|
|
|
+ dic.Add("AskTitle", askTitle);
|
|
|
|
|
|
- //应×××(邀请方名称+邀请人职务和姓名)的邀请,我单位拟派×××(职务、姓名)等×人(人数)于×××年×××月×××日赴×××(国家或地区)进行×××(出访目的)。现请示如下。
|
|
|
- string visitDateStr = @$"{groupInfo.VisitDate.Year}年{groupInfo.VisitDate.Month}月{groupInfo.VisitDate.Day}日";
|
|
|
- string obInfoStr = "";
|
|
|
- foreach (var ob in obDatas)
|
|
|
- {
|
|
|
- obInfoStr += @$"{ob.Client}{ob.Job}{ob.Contact}、";
|
|
|
- }
|
|
|
- if (obInfoStr.Length > 0)
|
|
|
- {
|
|
|
- obInfoStr = obInfoStr.Substring(0, obInfoStr.Length - 1);
|
|
|
- }
|
|
|
+ //应×××(邀请方名称+邀请人职务和姓名)的邀请,我单位拟派×××(职务、姓名)等×人(人数)于×××年×××月×××日赴×××(国家或地区)进行×××(出访目的)。现请示如下。
|
|
|
+ string visitDateStr = @$"{groupInfo.VisitDate.Year}年{groupInfo.VisitDate.Month}月{groupInfo.VisitDate.Day}日";
|
|
|
+ string obInfoStr = "";
|
|
|
+ string obBackgroundStr = "";//出访背景
|
|
|
+ foreach (var ob in obDatas)
|
|
|
+ {
|
|
|
+ obInfoStr += @$"{ob.Client}{ob.Job}{ob.Contact}、";
|
|
|
+
|
|
|
+ obBackgroundStr += $"{ob.Client}\r\n \t {ob.Setting}\r\n";
|
|
|
+
|
|
|
+ }
|
|
|
+ if (obInfoStr.Length > 0)
|
|
|
+ {
|
|
|
+ obInfoStr = obInfoStr.Substring(0, obInfoStr.Length - 1);
|
|
|
+ }
|
|
|
+ string askSubTitle = $@"应{obInfoStr}的邀请,我单位拟派{guestInfoStr}等{guestInfos.Count}人于{visitDateStr}赴{groupInfo.VisitCountry}进行{groupInfo.VisitPurpose}。现请示如下。";
|
|
|
+ dic.Add("AskSubTitle", askSubTitle);
|
|
|
|
|
|
- string askSubTitle = $@"应{obInfoStr}的邀请,我单位拟派{guestInfoStr}等{guestInfos.Count}人于{visitDateStr}赴{groupInfo.VisitCountry}进行{groupInfo.VisitPurpose}。现请示如下。";
|
|
|
- dic.Add("AskSubTitle", askSubTitle);
|
|
|
+ //出访背景
|
|
|
+ dic.Add("OBSetting", obBackgroundStr);
|
|
|
|
|
|
- //出访背景
|
|
|
- dic.Add("AskTitle", askTitle);
|
|
|
+ //出访目的
|
|
|
+ dic.Add("VisitPurpose", groupInfo.VisitPurpose);
|
|
|
|
|
|
- #region 填充word模板书签内容
|
|
|
- foreach (var key in dic.Keys)
|
|
|
- {
|
|
|
- builder.MoveToBookmark(key);
|
|
|
- builder.Write(dic[key]);
|
|
|
- }
|
|
|
- #endregion
|
|
|
+ //出访任务
|
|
|
+ //(一)××(国家或地区)
|
|
|
+ //1.拜访×××(机构名称)×××(姓名、职务)洽谈(或调研、推动等)×××(项目或机构名称等)。(例:拜会×××经济与发展司司长×××,商讨“×××活动”相关筹备工作。)
|
|
|
+ //2.拜访×××(机构名称)×××(姓名、职务)洽谈(或调研、推动等)×××(项目或机构名称等)。(例:拜会×××经济与发展司司长×××,商讨“×××活动”相关筹备工作。)
|
|
|
|
|
|
- //获取word里所有表格
|
|
|
- NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true);
|
|
|
- //获取所填表格的序数
|
|
|
- Aspose.Words.Tables.Table tableOne = allTables[0] as Aspose.Words.Tables.Table;
|
|
|
+ string taskStr = "";
|
|
|
+ List<string> countrys = groupInfo.VisitCountry.Split("、").ToList();
|
|
|
+ int countryIndex = 1;
|
|
|
+ foreach (var item in countrys)
|
|
|
+ {
|
|
|
+ string taskTitle = $"({GetToUpperNumber(countryIndex)}){item}\r\n";
|
|
|
+
|
|
|
+ string taskContent = "";
|
|
|
+ var countryObDatas = obDatas.Where(it => it.Client.Contains(item)).ToList();
|
|
|
+ int obIndex = 1;
|
|
|
+ foreach (var obInfo in countryObDatas)
|
|
|
+ {
|
|
|
+ taskContent += $"{obIndex}. 拜访{obInfo.Client}({obInfo.Contact}、{obInfo.Job})洽谈“{groupInfo.VisitPurpose}”相关工作。\r\n";
|
|
|
+ }
|
|
|
|
|
|
- var rowStart = tableOne.Rows[0]; //获取第1行
|
|
|
+ taskStr += $"{taskTitle}{taskContent}";
|
|
|
|
|
|
- //循环赋值
|
|
|
- for (int i = 0; i < guestInfos.Count; i++)
|
|
|
- {
|
|
|
- var guestInfo = guestInfos[i];
|
|
|
- builder.MoveToCell(0, i + 1, 0, 0);
|
|
|
- builder.Write(guestInfo.LastName + guestInfo.FirstName);
|
|
|
+ countryIndex++;
|
|
|
+ }
|
|
|
+ //出访任务
|
|
|
+ dic.Add("TaskContent", taskStr);
|
|
|
|
|
|
- builder.MoveToCell(0, i + 1, 1, 0);
|
|
|
- int sex = guestInfo.Sex;
|
|
|
- string sexStr = string.Empty;
|
|
|
- if (sex == 0) sexStr = "男";
|
|
|
- else if (sex == 1) sexStr = "女";
|
|
|
- else sexStr = "未设置";
|
|
|
- builder.Write(sexStr);
|
|
|
+ //出访时间
|
|
|
+ //代表团拟于××年×月×日—×月×日出访,在外停留×天。其中,××国家(或地区)×天,××国家(或地区)×天。
|
|
|
+ string visitCountryStr = $"[OP行程单读取]";
|
|
|
+ string visitTimeQuantumStr = $"代表团拟于{groupInfo.VisitStartDate.Year}年{groupInfo.VisitStartDate.Month}月{groupInfo.VisitStartDate.Day}日—{groupInfo.VisitEndDate.Month}月{groupInfo.VisitEndDate.Day}日出访,在外停留{groupInfo.VisitDays}天。其中,{visitCountryStr}。";
|
|
|
+ //出访时间
|
|
|
+ dic.Add("TimeQuantum", visitTimeQuantumStr);
|
|
|
|
|
|
- builder.MoveToCell(0, i + 1, 2, 0);
|
|
|
- builder.Write(guestInfo.CompanyFullName + guestInfo.Job);
|
|
|
+ //出访路线
|
|
|
+ //成都—××(出境城市名称)—××(转机不出机场)—××(公务所在城市)……—××(入境城市名称)—成都。(例:成都—法兰克福<转机不出机场>—巴黎—巴塞罗那—阿姆斯特丹<转机不出机场>-成都)
|
|
|
+ string lineStr = GeneralMethod.GetGroupCityLine(groupInfo.Id, "—");
|
|
|
+ dic.Add("Line", lineStr);
|
|
|
|
|
|
+ //TripInfo
|
|
|
+ dic.Add("Line", lineStr);
|
|
|
|
|
|
- builder.MoveToCell(0, i + 1, 3, 0);
|
|
|
- string birthDay = "";
|
|
|
- string birthDayStr = string.Empty;
|
|
|
- if (!string.IsNullOrEmpty(birthDay))
|
|
|
+ #region 填充word模板书签内容
|
|
|
+ foreach (var key in dic.Keys)
|
|
|
{
|
|
|
- birthDayStr = Convert.ToDateTime(birthDay).ToString("yyyy-MM-dd");
|
|
|
+ builder.MoveToBookmark(key);
|
|
|
+ builder.Write(dic[key]);
|
|
|
}
|
|
|
- builder.Write(birthDayStr);
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ //获取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 < guestInfos.Count; i++)
|
|
|
+ {
|
|
|
+ var guestInfo = guestInfos[i];
|
|
|
+ builder.MoveToCell(0, i + 1, 0, 0);
|
|
|
+ builder.Write(guestInfo.LastName + guestInfo.FirstName);
|
|
|
+
|
|
|
+ builder.MoveToCell(0, i + 1, 1, 0);
|
|
|
+ int sex = guestInfo.Sex;
|
|
|
+ string sexStr = string.Empty;
|
|
|
+ if (sex == 0) sexStr = "男";
|
|
|
+ else if (sex == 1) sexStr = "女";
|
|
|
+ else sexStr = "未设置";
|
|
|
+ builder.Write(sexStr);
|
|
|
+
|
|
|
+ builder.MoveToCell(0, i + 1, 2, 0);
|
|
|
+ builder.Write(guestInfo.CompanyFullName + guestInfo.Job);
|
|
|
+
|
|
|
+
|
|
|
+ builder.MoveToCell(0, i + 1, 3, 0);
|
|
|
+ string birthDay = "";
|
|
|
+ string birthDayStr = string.Empty;
|
|
|
+ if (!string.IsNullOrEmpty(birthDay))
|
|
|
+ {
|
|
|
+ birthDayStr = Convert.ToDateTime(birthDay).ToString("yyyy-MM-dd");
|
|
|
+ }
|
|
|
+ builder.Write(birthDayStr);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ var fileDir = AppSettingsHelper.Get("WordBasePath");
|
|
|
+ string fileName = $"{groupInfo.TeamName}省外办出访请示.docx";
|
|
|
+ string filePath = fileDir + $@"OfficialActivities/{fileName}";
|
|
|
+ doc.Save(filePath);
|
|
|
+
|
|
|
+ string Url = $@"{AppSettingsHelper.Get("WordBaseUrl")}Office/Word/OfficialActivities/{fileName}";
|
|
|
+ return Ok(JsonView(true, "操作成功!", Url));
|
|
|
+ }
|
|
|
+ else if (dto.FileType == 2)
|
|
|
+ {
|
|
|
|
|
|
}
|
|
|
|
|
|
- var fileDir = AppSettingsHelper.Get("WordBasePath");
|
|
|
- string fileName = $"{groupInfo.TeamName}省外办出访请示.docx";
|
|
|
- string filePath = fileDir + $@"Ask/{fileName}";
|
|
|
- doc.Save(filePath);
|
|
|
- string Url = $@"{AppSettingsHelper.Get("WordBaseUrl")}Office/Word/Ask/{fileName}";
|
|
|
- return Ok(JsonView(true, "操作成功!", Url));
|
|
|
+
|
|
|
+ return Ok(JsonView(true, "操作失败!"));
|
|
|
+ }
|
|
|
+
|
|
|
+ private string GetToUpperNumber(int num)
|
|
|
+ {
|
|
|
+ string numStr = "";
|
|
|
+
|
|
|
+ if (num == 1) numStr = "一";
|
|
|
+ else if (num == 2) numStr = "二";
|
|
|
+ else if (num == 3) numStr = "三";
|
|
|
+ else if (num == 4) numStr = "四";
|
|
|
+ else if (num == 5) numStr = "五";
|
|
|
+ else if (num == 6) numStr = "六";
|
|
|
+ else if (num == 7) numStr = "七";
|
|
|
+ else if (num == 8) numStr = "八";
|
|
|
+ else if (num == 9) numStr = "九";
|
|
|
+ else if (num == 10) numStr = "十";
|
|
|
+
|
|
|
+
|
|
|
+ return numStr;
|
|
|
}
|
|
|
|
|
|
#endregion
|