Selaa lähdekoodia

Merge branch 'develop' of http://132.232.92.186:3000/XinXiBu/OA2023 into develop

LEIYI 2 kuukautta sitten
vanhempi
commit
35985ed27a

+ 225 - 141
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -20556,6 +20556,19 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
             var group = groupList.First();
             var diid = dto.Diid == -1 ? group?.Id : dto.Diid;
             group = groupList.First(x => x.Id == diid);
+            var blackCodeList = _sqlSugar.Queryable<Air_TicketBlackCode>()
+                                         .Where(x => x.DiId == diid && x.IsDel == 0)
+                                         .ToArray();
+
+            var count = 1;
+            foreach (var item in blackCodeList)
+            {
+                if (string.IsNullOrWhiteSpace(item.Title))
+                {
+                    item.Title = "未设置名称数据" + count;
+                }
+                count++;
+            };
 
             if (group == null)
             {
@@ -20581,104 +20594,131 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                     visitStartDate = group.VisitStartDate.ToString("yyyy-MM-dd"),
                     visitEndDate = group.VisitEndDate.ToString("yyyy-MM-dd")
                 },
+                blackCodeList = blackCodeList.Select(x => new
+                {
+                    x.Title,
+                    x.Id
+                }),
+                FileTempList = new ArrayList()
+                {
+                    new { Index = 1,FileName = "旧模板" },
+                    new { Index = 2,FileName = "省外办" },
+                    new { Index = 3,FileName = "市外办" },
+                }
             };
 
             var resultArr = new ArrayList();
             var content = _sqlSugar.Queryable<Grp_ApprovalTravel>().Where(x => x.Diid == diid && x.IsDel == 0).ToList();
-            if (content.Count == 0)
-            {
-                var stay = "-";
-                var cityPath = "-";
 
-                //添加城市路径以及住宿地
-                //黑屏代码数据
-                DataTable dtBlack = GeneralMethod.GetTableByBlackCode(group.Id);
+            #region 默认不生成行程
+            //if (content.Count == 0)
+            //{
+            //    var stay = "-";
+            //    var cityPath = "-";
+            //    var blackCodeList = _sqlSugar.Queryable<Air_TicketBlackCode>()
+            //                                   .Where(x => x.DiId == diid && x.IsDel == 0)
+            //                                   .ToList();
 
-                if (dtBlack.Rows.Count == 0 || string.IsNullOrWhiteSpace(dtBlack.Rows[0][1].ToString()))
-                {
-                    jw = JsonView(true, "黑屏代码有误!", data);
-                    return Ok(jw);
-                }
+            //    //添加城市路径以及住宿地
+            //    //黑屏代码数据
+            //    DataTable dtBlack = GeneralMethod.GetTableByBlackCodeById(blackCodeList.FirstOrDefault());
 
-                foreach (DataRow row in dtBlack.Rows)
-                {
-                    if (!string.IsNullOrWhiteSpace(row["Error"].ToString()))
-                    {
-                        jw = JsonView(true, "黑屏代码有误!" + row["Error"].ToString(), data);
-                        return Ok(jw);
-                    }
-                }
+            //    if (dtBlack.Rows.Count == 0 || string.IsNullOrWhiteSpace(dtBlack.Rows[0][1].ToString()))
+            //    {
+            //        jw = JsonView(true, "黑屏代码有误!", data);
+            //        return Ok(jw);
+            //    }
 
-                //黑屏代码获取时间区间
-                var timeArr = GeneralMethod.GetTimeListByDataTable(dtBlack);
+            //    data = data with
+            //    {
+            //        blackCodeList = new ArrayList(blackCodeList.Select(x => new
+            //        {
+            //            x.Title,
+            //            x.Id,
+            //        }).ToArray())
+            //    };
+
+            //    foreach (DataRow row in dtBlack.Rows)
+            //    {
+            //        if (!string.IsNullOrWhiteSpace(row["Error"].ToString()))
+            //        {
+            //            jw = JsonView(true, "黑屏代码有误!" + row["Error"].ToString(), data);
+            //            return Ok(jw);
+            //        }
+            //    }
 
-                string[] Day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
+            //    //黑屏代码获取时间区间
+            //    var timeArr = GeneralMethod.GetTimeListByDataTable(dtBlack);
 
-                _sqlSugar.BeginTran();
-                for (int i = 0; i < timeArr.Count; i++)
-                {
+            //    string[] Day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
 
-                    stay = "-";
-                    cityPath = "-";
-
-                    DateTime NewData = DateTime.Parse(timeArr[i]);
-                    string week = Day[Convert.ToInt32(NewData.DayOfWeek.ToString("d"))].ToString();
-                    Grp_ApprovalTravel appro = new Grp_ApprovalTravel();
-
-                    var tbSelect = dtBlack.Select(string.Format("Day = '{0}'", NewData.ToString("yyyy-MM-dd")));
-                    if (tbSelect.Length > 0)
-                    {
-                        List<string> threeCodeStr = new List<string>();
-                        foreach (var item in tbSelect)
-                        {
-                            var threeCode = item["Three"].ToString() ?? "";
-                            if (threeCode.Length == 6)
-                            {
-                                var start = threeCode.Substring(0, 3);
-                                var end = threeCode.Substring(3, 3);
-                                if (threeCodeStr.Count == 0)
-                                {
-                                    threeCodeStr.Add(start);
-                                    threeCodeStr.Add(end);
-                                }
-                                else
-                                {
-                                    if (threeCodeStr[threeCodeStr.Count - 1] == start)
-                                    {
-                                        threeCodeStr.Add(end);
-                                    }
-                                    else
-                                    {
-                                        threeCodeStr.Add(start);
-                                        threeCodeStr.Add(end);
-                                    }
-                                }
-                            }
-                        }
-                        var threeCodeList = _threeCodeRepository.QueryThreeCodeArray(threeCodeStr);
-                        var last = threeCodeStr.Last();
-                        foreach (var item in threeCodeStr)
-                        {
-                            cityPath += (threeCodeList.Keys.Contains(item) ? threeCodeList[item].City : "【未知三字码】") + "-";
-                            if (item.Equals(last))
-                            {
-                                stay = threeCodeList.Keys.Contains(item) ? threeCodeList[item].City : "【未知三字码】";
-                            }
-                        }
+            //    _sqlSugar.BeginTran();
+            //    for (int i = 0; i < timeArr.Count; i++)
+            //    {
 
-                        cityPath = cityPath.Trim('-');
-                    }
+            //        stay = "-";
+            //        cityPath = "-";
+
+            //        DateTime NewData = DateTime.Parse(timeArr[i]);
+            //        string week = Day[Convert.ToInt32(NewData.DayOfWeek.ToString("d"))].ToString();
+            //        Grp_ApprovalTravel appro = new Grp_ApprovalTravel();
+
+            //        var tbSelect = dtBlack.Select(string.Format("Day = '{0}'", NewData.ToString("yyyy-MM-dd")));
+            //        if (tbSelect.Length > 0)
+            //        {
+            //            List<string> threeCodeStr = new List<string>();
+            //            foreach (var item in tbSelect)
+            //            {
+            //                var threeCode = item["Three"].ToString() ?? "";
+            //                if (threeCode.Length == 6)
+            //                {
+            //                    var start = threeCode.Substring(0, 3);
+            //                    var end = threeCode.Substring(3, 3);
+            //                    if (threeCodeStr.Count == 0)
+            //                    {
+            //                        threeCodeStr.Add(start);
+            //                        threeCodeStr.Add(end);
+            //                    }
+            //                    else
+            //                    {
+            //                        if (threeCodeStr[threeCodeStr.Count - 1] == start)
+            //                        {
+            //                            threeCodeStr.Add(end);
+            //                        }
+            //                        else
+            //                        {
+            //                            threeCodeStr.Add(start);
+            //                            threeCodeStr.Add(end);
+            //                        }
+            //                    }
+            //                }
+            //            }
+            //            var threeCodeList = _threeCodeRepository.QueryThreeCodeArray(threeCodeStr);
+            //            var last = threeCodeStr.Last();
+            //            foreach (var item in threeCodeStr)
+            //            {
+            //                cityPath += (threeCodeList.Keys.Contains(item) ? threeCodeList[item].City : "【未知三字码】") + "-";
+            //                if (item.Equals(last))
+            //                {
+            //                    stay = threeCodeList.Keys.Contains(item) ? threeCodeList[item].City : "【未知三字码】";
+            //                }
+            //            }
+
+            //            cityPath = cityPath.Trim('-');
+            //        }
+
+            //        appro.Date = "第" + intToString(i + 1) + "天 " + NewData.Month + "月" + NewData.Day + "日(" + week + ") " + cityPath + " 宿:" + stay;
+            //        appro.Diid = diid ?? -1;
+            //        var thisId = _sqlSugar.Insertable<Grp_ApprovalTravel>(appro).ExecuteReturnIdentity();
+            //        appro.Id = thisId;
+            //        appro.CreateUserId = dto.UserId;
+            //        appro.CreateTime = DateTime.Now;
+            //        content.Add(appro);
+            //    }
+            //    _sqlSugar.CommitTran();
+            //}
 
-                    appro.Date = "第" + intToString(i + 1) + "天 " + NewData.Month + "月" + NewData.Day + "日(" + week + ") " + cityPath + " 宿:" + stay;
-                    appro.Diid = diid ?? -1;
-                    var thisId = _sqlSugar.Insertable<Grp_ApprovalTravel>(appro).ExecuteReturnIdentity();
-                    appro.Id = thisId;
-                    appro.CreateUserId = dto.UserId;
-                    appro.CreateTime = DateTime.Now;
-                    content.Add(appro);
-                }
-                _sqlSugar.CommitTran();
-            }
+            #endregion
 
             foreach (var x in content)
             {
@@ -20698,7 +20738,7 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                     x.Diid,
                     chiList = chiList.Select(x1 => new
                     {
-                        timeInterval = x1.Time == null ? new string[1] : x1.Time.Split('-'),
+                        timeInterval = string.IsNullOrWhiteSpace(x1.Time) ? new string[1] : x1.Time.Split('-'),
                         x1.Details,
                         x1.ParentId,
                         x1.Id
@@ -20871,8 +20911,10 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                 return Ok(jw);
             }
 
+            var blackCode = _sqlSugar.Queryable<Air_TicketBlackCode>().First(x => x.Id == dto.BlackCodeId && x.IsDel == 0);
+
             //黑屏代码数据
-            DataTable dtBlack = GeneralMethod.GetTableByBlackCode(group.Id);
+            DataTable dtBlack = GeneralMethod.GetTableByBlackCodeBySingle(blackCode);
 
             if (dtBlack.Rows.Count == 0 || string.IsNullOrWhiteSpace(dtBlack.Rows[0][1].ToString()))
             {
@@ -20889,14 +20931,14 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                 }
             }
 
-            var officialActivitiesArr = _sqlSugar.Queryable<Res_OfficialActivities>().Where(x => x.DiId == dto.Diid && x.IsDel == 0).ToList();
+            //var officialActivitiesArr = _sqlSugar.Queryable<Res_OfficialActivities>().Where(x => x.DiId == dto.Diid && x.IsDel == 0).ToList();
             var resultArr = new ArrayList();
 
-            if (officialActivitiesArr.Count == 0)
-            {
-                jw.Msg = "暂无公务出访信息!";
-                return Ok(jw);
-            }
+            //if (officialActivitiesArr.Count == 0)
+            //{
+            //    jw.Msg = "暂无公务出访信息!";
+            //    return Ok(jw);
+            //}
 
             try
             {
@@ -20927,7 +20969,7 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                     var chiarr = new List<Grp_ApprovalTravelDetails>();
 
                     DateTime NewData = DateTime.Parse(timeArr[i]);
-                    var gwinfo = officialActivitiesArr.Where(x => DateTime.TryParse(x.Date, out DateTime gwData) && gwData.ToString("yyyy-MM-dd") == NewData.ToString("yyyy-MM-dd")).OrderBy(x => x.Time).ToList();
+                    //var gwinfo = officialActivitiesArr.Where(x => DateTime.TryParse(x.Date, out DateTime gwData) && gwData.ToString("yyyy-MM-dd") == NewData.ToString("yyyy-MM-dd")).OrderBy(x => x.Time).ToList();
 
                     var tbSelect = dtBlack.Select(string.Format("Day = '{0}'", NewData.ToString("yyyy-MM-dd")));
                     if (tbSelect.Length > 0)
@@ -21043,7 +21085,7 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                             if (aircompany == null)
                             {
                                 aircompany = new Res_AirCompany
-                                {
+                            {
                                     CnName = hsEmpty,
                                     EnName = hsEmpty,
                                     ShortCode = hsEmpty,
@@ -21051,14 +21093,14 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                             }
 
                             //从成都天府国际机场搭乘四川航空公司3U3961飞往东京
-                            trip += $"从{start_Object.AirPort}搭乘{aircompany.CnName} {flightcode} 飞往 {end_Object.City};\r\n({start_Object.AirPort}/{end_Object.AirPort}  机型:{airModel}    飞行时间{flightTime});\r\n";
+                            trip += $"从{start_Object.AirPort}搭乘{aircompany.CnName}{flightcode}飞往{end_Object.City}。"; // \r\n({start_Object.AirPort}/{end_Object.AirPort}  机型:{airModel}    飞行时间{flightTime});\r\n
 
                             isTrade = Convert.ToBoolean(item["isTransitShipment"]);
 
                             if (isTrade)
                             {
                                 trip += $"抵达{end_Object.AirPort}{item["EndBuilding"].ToString().Trim()}航站楼(中转 行李直达)\r\n";
-                            }
+                                }
                             else
                             {
                                 trip += "\r\n"; //$"抵达{end_Object.AirPort}{item["EndBuilding"].ToString().Trim()}航站楼,办理入境手续,之后前往提取行李\r\n";
@@ -21093,25 +21135,25 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
 
                     string week = Day[Convert.ToInt32(NewData.DayOfWeek.ToString("d"))].ToString();
                     Grp_ApprovalTravel appro = new Grp_ApprovalTravel();
-                    appro.Date = "第" + intToString(i + 1) + "天 " + NewData.Month + "月" + NewData.Day + "日(" + week + ") " + cityPath + " 宿:" + stay;
+                    appro.Date =  NewData.Month + "月" + NewData.Day + "日(" + week + ")"+ "第" + intToString(i + 1) + "天 ";
                     appro.Diid = dto.Diid;
-                    var thisId = _sqlSugar.Insertable<Grp_ApprovalTravel>(appro).ExecuteReturnIdentity();
-                    appro.Id = thisId;
                     appro.CreateUserId = dto.Userid;
                     appro.CreateTime = DateTime.Now;
+                    var thisId = _sqlSugar.Insertable<Grp_ApprovalTravel>(appro).ExecuteReturnIdentity();
+                    appro.Id = thisId;
 
-                    foreach (var item in gwinfo)
-                    {
-                        Grp_ApprovalTravelDetails chi = new Grp_ApprovalTravelDetails();
-                        chi.Details = "拜访" + item.Client;
-                        if (!string.IsNullOrWhiteSpace(item.ReqSample))
-                        {
-                            chi.Details += "," + item.ReqSample;
-                        }
-                        chi.ParentId = thisId;
-                        chi.Time = item.Time;
-                        chiarr.Add(chi);
-                    }
+                    //foreach (var item in gwinfo)
+                    //{
+                    //    Grp_ApprovalTravelDetails chi = new Grp_ApprovalTravelDetails();
+                    //    chi.Details = "拜访" + item.Client;
+                    //    if (!string.IsNullOrWhiteSpace(item.ReqSample))
+                    //    {
+                    //        chi.Details += "," + item.ReqSample;
+                    //    }
+                    //    chi.ParentId = thisId;
+                    //    chi.Time = item.Time;
+                    //    chiarr.Add(chi);
+                    //}
 
                     if (chiarr.Count < 5)
                     {
@@ -21129,7 +21171,7 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                         appro.Diid,
                         chiList = chiarr.Select(x1 => new
                         {
-                            timeInterval = x1.Time == null ? new string[1] : x1.Time.Split('-'),
+                            timeInterval = string.IsNullOrWhiteSpace(x1.Time) ? new string[1] : x1.Time.Split('-'),
                             x1.Details,
                             x1.ParentId,
                             x1.Id
@@ -21165,7 +21207,32 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
             }
 
             //模板路径
-            string tempPath = (AppSettingsHelper.Get("WordBasePath") + "Template/公务行程导出模板.docx");  //"C:\\Server\\File\\OA2023\\Office\\Word\\Template/公务行程导出模板.docx"
+            string tempPath = AppSettingsHelper.Get("WordBasePath")+ "Template/";
+            var fileName = string.Empty;
+            string titleFont = string.Empty,timeFont = string.Empty, contentFont = string.Empty;
+            bool bold = false;
+
+            if (dto.FileIndex == 1)
+            {
+                fileName = "公务行程导出模板.docx"; //"C:\\Server\\File\\OA2023\\Office\\Word\\Template/公务行程导出模板.docx"
+            } 
+            else if (dto.FileIndex == 2)
+            {
+                fileName = "省外办-报批.docx";
+                bold = true;
+                titleFont = "方正黑体简体";
+                timeFont = "Times New Roman";
+                contentFont = "方正仿宋_GBK";
+            }
+            else if (dto.FileIndex == 3)
+            {
+                fileName = "市外办-报批.docx";
+                titleFont = "方正黑体简体";
+                timeFont = "Times New Roman";
+                contentFont = "方正仿宋简体";
+            }
+
+            tempPath = tempPath + fileName;
 
             //载入模板
             Document doc = new Document(tempPath);
@@ -21195,7 +21262,7 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
 
                 var ChiRep = _sqlSugar.Queryable<Grp_ApprovalTravelDetails>().Where(x => x.IsDel == 0 && x.ParentId == item.Id).ToList();
 
-                SetCells(tableOne, doc, SetIndex, 0, textTime);
+                SetCells(tableOne, doc, SetIndex, 0, textTime,titleFont,bold);
 
                 SetIndex++;
 
@@ -21206,42 +21273,43 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                         var txtTime = itemChi.Time;
                         var txtDetail = itemChi.Details;
 
+                        if (string.IsNullOrEmpty(txtTime) && string.IsNullOrEmpty(txtDetail))
+                        {
+                            //SetCells(tableOne, doc, SetIndex, 0, "", timeFont, bold);
+                            //SetCells(tableOne, doc, SetIndex, 1, "", contentFont, bold);
+                            //indexChi++;
+                            //SetIndex++;
+                            break;
+                        }
+
                         if (indexChi > 0)
                         {
                             CenterRowClone = (Aspose.Words.Tables.Row)tableOne.Rows[1].Clone(true);
                             tableOne.AppendChild(CenterRowClone);
                         }
-                        if (string.IsNullOrEmpty(txtTime) && string.IsNullOrEmpty(txtDetail))
-                        {
-                            SetCells(tableOne, doc, SetIndex, 0, "");
-                            SetCells(tableOne, doc, SetIndex, 1, "");
-                            indexChi++;
-                            SetIndex++;
-                            break;
-                        }
-                        SetCells(tableOne, doc, SetIndex, 0, txtTime);
-                        SetCells(tableOne, doc, SetIndex, 1, txtDetail);
+                        SetCells(tableOne, doc, SetIndex, 0, txtTime,timeFont,bold);
+                        SetCells(tableOne, doc, SetIndex, 1, txtDetail,contentFont, bold);
                         indexChi++;
                         SetIndex++;
                     }
                 }
-                else
-                {
-                    if (indexChi > 0)
-                    {
-                        CenterRowClone = (Aspose.Words.Tables.Row)tableOne.Rows[1].Clone(true);
-                        tableOne.AppendChild(CenterRowClone);
-                    }
-                    SetCells(tableOne, doc, SetIndex, 0, "");
-                    SetCells(tableOne, doc, SetIndex, 1, "");
-                    indexChi++;
-                    SetIndex++;
-                }
+                //else
+                //{
+                //    if (indexChi > 0)
+                //    {
+                //        CenterRowClone = (Aspose.Words.Tables.Row)tableOne.Rows[1].Clone(true);
+                //        tableOne.AppendChild(CenterRowClone);
+                //    }
+                //    SetCells(tableOne, doc, SetIndex, 0, "",timeFont, bold);
+                //    SetCells(tableOne, doc, SetIndex, 1, "", contentFont, bold);
+                //    indexChi++;
+                //    SetIndex++;
+                //}
                 index++;
             }
 
-            string strFileName = "/Travel/ExportApprovalJourneyWord/" + group.TeamName + "商邀出访日程.doc";
-            doc.Save(AppSettingsHelper.Get("WordBasePath") + strFileName);  //"C:\\Server\\File\\OA2023\\Office\\Word" + strFileName
+            string strFileName = "/Travel/ExportApprovalJourneyWord/" + group.TeamName + fileName;
+            doc.Save(AppSettingsHelper.Get("WordBasePath") + strFileName,Aspose.Words.SaveFormat.Docx);  //"C:\\Server\\File\\OA2023\\Office\\Word" + strFileName
             jw.Data = AppSettingsHelper.Get("WordBaseUrl") + AppSettingsHelper.Get("WordFtpPath") + strFileName;  //"C:\\Server\\File\\OA2023\\Office\\Word" + strFileName
             jw.Code = 200;
             jw.Msg = "";
@@ -21287,12 +21355,12 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
             return stringNumberVal;
         }
 
-        private void SetCells(Aspose.Words.Tables.Table table, Document doc, int rows, int cells, string val)
+        private void SetCells(Aspose.Words.Tables.Table table, Document doc, int rows, int cells, string val,string font ,bool bold)
         {
             //获取table中的某个单元格,从0开始
             Cell lshCell = table.Rows[rows].Cells[cells];
             //将单元格中段落移除
-            foreach (Node item in lshCell.Paragraphs)
+            foreach (Paragraph item in lshCell.Paragraphs)
             {
                 lshCell.Paragraphs.Remove(item);
             }
@@ -21305,6 +21373,14 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                     //新建一个段落
                     Paragraph p = new Paragraph(doc);
                     var r = new Run(doc, item);
+
+                    //设置字体
+                    if (!string.IsNullOrEmpty(font))
+                    {
+                        r.Font.Name = font;
+                    }
+                    r.Font.Bold = bold;
+
                     //把设置的值赋给之前新建的段落
                     p.AppendChild(r);
                     //将此段落加到单元格内
@@ -21316,6 +21392,14 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                 //新建一个段落
                 Paragraph p = new Paragraph(doc);
                 var r = new Run(doc, val);
+
+                //设置字体
+                if (!string.IsNullOrEmpty(font))
+                {
+                    r.Font.Name = font;
+                }
+                r.Font.Bold = bold;
+
                 //把设置的值赋给之前新建的段落
                 p.AppendChild(r);
                 //将此段落加到单元格内

+ 111 - 0
OASystem/OASystem.Api/OAMethodLib/GeneralMethod.cs

@@ -2156,6 +2156,117 @@ namespace OASystem.API.OAMethodLib
             return dt;
         }
 
+        /// <summary>
+        ///根据黑屏代码整理DataTable
+        /// </summary>
+        /// <param name="blackCode"></param>
+        /// <returns></returns>
+        public static DataTable GetTableByBlackCodeBySingle(Air_TicketBlackCode blackCode)
+        {
+            DataTable dt = new DataTable();
+            dt.Columns.Add("Fliagtcode", typeof(string)); //航班号
+            dt.Columns.Add("Date", typeof(string));//起飞日期
+            dt.Columns.Add("Three", typeof(string));//三字码
+            dt.Columns.Add("StartTime", typeof(string));//起飞时刻
+            dt.Columns.Add("EndTime", typeof(string));//到达时刻
+            dt.Columns.Add("StartBuilding", typeof(string));//出发航站楼
+            dt.Columns.Add("EndBuilding", typeof(string));//到达航站楼
+            dt.Columns.Add("AirModel", typeof(string)); //机型
+            dt.Columns.Add("FlightTime", typeof(string));//飞行时间
+            dt.Columns.Add("Day", typeof(string));//整理的起飞日期;作为排序依据 
+            dt.Columns.Add("ArrivedDate", typeof(string));//整理的到达日期
+            dt.Columns.Add("Error", typeof(string));//整理的到达日期
+            dt.Columns.Add("Sign", typeof(string));//标识:0表示为原生黑屏代码、1表示“+1”新增的黑屏代码
+
+            //添加转机标识
+            dt.Columns.Add("isTransitShipment", typeof(bool));
+
+            //判断是否录入黑屏代码
+            if (blackCode == null)
+            {
+                dt.Rows.Add(null, null, null, null, null, null, null, null, null, null, null, "黑屏代码未录入!", null, false);
+            }
+            else
+            {
+                var listcode = new List<Air_TicketBlackCode> { blackCode };
+
+                //读取单段黑屏代码
+                for (int i = 0; i < listcode.Count; i++)
+                {
+                    //去除序号
+                    string[] CodeList = Regex.Split(listcode[i].BlackCode, "\\d+\\.", RegexOptions.IgnoreCase);
+                    //去除多余空格,方法一Linq扩展方法
+                    CodeList = CodeList.Where(str => !string.IsNullOrWhiteSpace(str)).ToArray();
+
+                    //读取单条黑屏代码
+                    for (int j = 0; j < CodeList.Count(); j++)
+                    {
+                        //去除多余空格,方法二使用Split()方法进行分割,分割有一个选项是RemoveEmptyEntries
+                        CodeList[j] = CodeList[j].Replace("\r\n", string.Empty).Replace("\\r\\n", string.Empty).TrimStart().TrimEnd();
+                        string[] Info = CodeList[j].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
+
+                        //去除多余空格
+                        Info = Info.Where(str => !string.IsNullOrWhiteSpace(str)).ToArray();
+
+                        //判断黑屏代码是否正确拆分; 理应拆成9段
+                        if (Info.TakeWhile((x) =>
+                        {
+                            return !excludeArr.Contains(x);
+                        }).Count() != 9)
+                        {
+                            dt.Rows.Add(null, null, null, null, null, null, null, null, null, null, null, "本团组第" + (i + 1) + "段黑屏代码中第" + (j + 1) + " 条有误,请联系机票同事核对", null, false);
+                            //MessageBoxEx.Show("第" + (i + 1) + "段黑屏代码中第" + (j + 1) + " 条有误, 请联系机票同事核对");
+                            return dt;
+                        }
+                        else
+                        {
+                            try
+                            {
+                                var monthEn = Info[1].Substring(4, 3);
+
+                                //月                  
+                                int month = Convert.ToInt32(GetLonger(monthEn));
+                                //日
+                                int day = Convert.ToInt32(Info[1].Substring(2, 2));
+
+                                var time = new DateTime(DateTime.Now.Year, month, day); //
+
+                                var isExist = Info.Contains("[中转]");
+                               
+                                dt.Rows.Add(Info[0],
+                                       Info[1],
+                                       Info[2],
+                                       Info[3],
+                                       Info[4],
+                                       Info[5],
+                                       Info[6],
+                                       Info[7],
+                                       Info[8],
+                                       time.ToString("yyyy-MM-dd"),
+                                       time.ToString("yyyy-MM-dd"),
+                                       "",
+                                       "0",
+                                       isExist
+                                       );
+
+                            }
+                            catch (Exception ex)
+                            {
+                                string exstr = ex.Message.ToString();
+                            }
+                        }
+
+                    }
+
+                    //排序
+                    dt.DefaultView.Sort = "Day asc";
+                    dt = dt.DefaultView.ToTable();
+                }
+            }
+
+            return dt;
+        }
+
         /// <summary>
         /// 根据星期,月份的缩写,转换成数字或者全称
         /// 根据币种中文名称返回币种代码

+ 8 - 0
OASystem/OASystem.Domain/Dtos/Groups/ApprovalJourneyDto.cs

@@ -17,11 +17,19 @@ namespace OASystem.Domain.Dtos.Groups
         public int Diid { get; set; }
         
         public int Userid { get; set;}
+
+        public int BlackCodeId { get; set; }
     }
 
     public class ExportApprovalJourneyWord
     {
         public int Diid { get; set; }
+
+        /// <summary>
+        ///  1 默认模板  2 省外办  3 市外办
+        /// </summary>
+
+        public int FileIndex { get; set; } = 1;
     }
 
     public class SaveApprovalJourney