yuanrf преди 8 месеца
родител
ревизия
7e29e97cce
променени са 2 файла, в които са добавени 224 реда и са изтрити 45 реда
  1. 223 44
      OASystem/OASystem.Api/Controllers/GroupsController.cs
  2. 1 1
      OASystem/OASystem.Api/OAMethodLib/GeneralMethod.cs

+ 223 - 44
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -12211,6 +12211,26 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                 return Ok(jw);
             }
 
+            var data = new
+            {
+                groupList = groupList.Select(x => new
+                {
+                    x.TeamName,
+                    x.Id
+                }),
+                content = new ArrayList(),
+                groupInfo = new
+                {
+                    group.VisitDays,
+                    group.TourCode,
+                    group.VisitPNumber,
+                    group.TeamName,
+                    group.Id,
+                    visitStartDate = group.VisitStartDate.ToString("yyyy-MM-dd"),
+                    visitEndDate = group.VisitEndDate.ToString("yyyy-MM-dd")
+                },
+            };
+
             var resultArr = new ArrayList();
             var content = _sqlSugar.Queryable<Grp_ApprovalTravel>().Where(x => x.Diid == diid && x.IsDel == 0).ToList();
             if (content.Count == 0)
@@ -12222,24 +12242,34 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                 //黑屏代码数据
                 DataTable dtBlack = GeneralMethod.GetTableByBlackCode(group.Id);
 
-                DateTime StartDate = (group.VisitStartDate);
-                DateTime EndDate = (group.VisitEndDate);
-                TimeSpan t3 = EndDate - StartDate;  //两个时间相减 。默认得到的是 两个时间之间的天数   得到:365.00:00:00  
-                var getDay = t3.Days;
-                if (getDay == 0) getDay = 1;
+                if (dtBlack.Rows.Count == 0 || string.IsNullOrWhiteSpace(dtBlack.Rows[0][1].ToString()))
+                {
+                    jw = JsonView(true, "黑屏代码有误!", data);
+                    return Ok(jw);
+                }
 
-                //获取时间区间
-                
+                foreach (DataRow row in dtBlack.Rows)
+                {
+                    if (!string.IsNullOrWhiteSpace(row["Error"].ToString()))
+                    {
+                        jw = JsonView(true, "黑屏代码有误!" + row["Error"].ToString(), data);
+                        return Ok(jw);
+                    }
+                }
+
+                //黑屏代码获取时间区间
+                var timeArr = GeneralMethod.GetTimeListByDataTable(dtBlack);
 
                 string[] Day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
+
                 _sqlSugar.BeginTran();
-                for (int i = 0; i < getDay; i++)
+                for (int i = 0; i < timeArr.Count; i++)
                 {
 
                     stay = "-";
                     cityPath = "-";
 
-                    DateTime NewData = StartDate.AddDays(i);
+                    DateTime NewData = DateTime.Parse(timeArr[i]);
                     string week = Day[Convert.ToInt32(NewData.DayOfWeek.ToString("d"))].ToString();
                     Grp_ApprovalTravel appro = new Grp_ApprovalTravel();
 
@@ -12276,12 +12306,14 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                         var last = threeCodeStr.Last();
                         foreach (var item in threeCodeStr)
                         {
-                            cityPath += threeCodeList.Keys.Contains(item) ? threeCodeList[item].City : "【未知三字码】";
+                            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;
@@ -12321,24 +12353,9 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                 });
             }
 
-            var data = new
+            data = data with
             {
-                groupList = groupList.Select(x => new
-                {
-                    x.TeamName,
-                    x.Id
-                }),
-                content =  resultArr,
-                groupInfo = new
-                {
-                    group.VisitDays,
-                    group.TourCode,
-                    group.VisitPNumber,
-                    group.TeamName,
-                    group.Id,
-                    visitStartDate = group.VisitStartDate.ToString("yyyy-MM-dd"),
-                    visitEndDate = group.VisitEndDate.ToString("yyyy-MM-dd")
-                },
+                 content = resultArr,
             };
 
             jw = JsonView(true,"获取成功!",data);
@@ -12501,11 +12518,23 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                 return Ok(jw);
             }
 
-            DateTime StartDate = (group.VisitStartDate);
-            DateTime EndDate = (group.VisitEndDate);
-            TimeSpan t3 = EndDate - StartDate;
-            var getDay = t3.Days;
-            if (getDay == 0) getDay = 1;
+            //黑屏代码数据
+            DataTable dtBlack = GeneralMethod.GetTableByBlackCode(group.Id);
+
+            if (dtBlack.Rows.Count == 0 || string.IsNullOrWhiteSpace(dtBlack.Rows[0][1].ToString()))
+            {
+                jw.Msg = "黑屏代码有误!";
+                return Ok(jw);
+            }
+
+            foreach (DataRow row in dtBlack.Rows)
+            {
+                if (!string.IsNullOrWhiteSpace(row["Error"].ToString()))
+                {
+                    jw.Msg = "黑屏代码有误!" + row["Error"].ToString();
+                    return Ok(jw);
+                }
+            }
 
             var officialActivitiesArr = _sqlSugar.Queryable<Res_OfficialActivities>().Where(x => x.DiId == dto.Diid && x.IsDel == 0).ToList();
             var resultArr = new ArrayList();
@@ -12531,16 +12560,174 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                 var cityPath = "-";
 
                 //添加城市路径以及住宿地
-                //黑屏代码数据
-                DataTable dtBlack = GeneralMethod.GetTableByBlackCode(group.Id);
 
+                //黑屏代码获取时间区间
+                var timeArr = GeneralMethod.GetTimeListByDataTable(dtBlack);
+                var empty = "【未收入该三字码!请机票同事录入】";
                 string[] Day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
-                for (int i = 0; i < getDay; i++)
+
+                for (int i = 0; i < timeArr.Count; i++)
                 {
+                    stay = "-";
+                    cityPath = "-";
+
+                    var chiarr = new List<Grp_ApprovalTravelDetails>();
 
-                    DateTime NewData = StartDate.AddDays(i);
+                    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 tbSelect = dtBlack.Select(string.Format("Day = '{0}'", NewData.ToString("yyyy-MM-dd")));
+                    if (tbSelect.Length > 0)
+                    {
+                        List<string> threeCodeStr = new List<string>();
+
+                        bool isTrade = false;
+                        string trip = string.Empty;
+
+                        var rowLast = tbSelect.Last();
+                        var rowFirst = tbSelect.First();
+                        var airStartTime = rowFirst["StartTime"].ToString() ?? "0000";
+                        var airEndTime = rowLast["EndTime"].ToString() ?? "0000";
+                        var takeOffTime = DateTime.Parse(timeArr[i]);
+                        var fallToTime = DateTime.Parse(timeArr[i]);
+                        takeOffTime = takeOffTime.AddHours(int.Parse(airStartTime.Substring(0, 2)));
+                        takeOffTime = takeOffTime.AddMinutes(int.Parse(airStartTime.Substring(2, 2)));
+                        fallToTime = fallToTime.AddHours(int.Parse(airEndTime.Substring(0, 2)));
+                        fallToTime = fallToTime.AddMinutes(int.Parse(airEndTime.Substring(2, 2)));
+
+                        foreach (var item in tbSelect)
+                        {
+                            var start = string.Empty;
+                            var end = string.Empty;
+                            var threeCode = item["Three"].ToString() ?? "";
+                            if (threeCode.Length == 6)
+                            {
+                                start = threeCode.Substring(0, 3);
+                                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 start_Object = _sqlSugar.Queryable<Res_ThreeCode>().First(x => x.Three.ToUpper() == start.ToUpper());
+                            var end_Object = _sqlSugar.Queryable<Res_ThreeCode>().First(x => x.Three.ToUpper() == end.ToUpper());
+                            if (start_Object == null)
+                            {
+                                start_Object = new Res_ThreeCode()
+                                {
+                                    AirPort = empty,
+                                    AirPort_En = empty,
+                                    City = empty,
+                                    Country = empty,
+                                    Four = empty,
+                                    Three = empty,
+                                };
+                            }
+                            if (end_Object == null)
+                            {
+                                end_Object = new Res_ThreeCode()
+                                {
+                                    AirPort = empty,
+                                    AirPort_En = empty,
+                                    City = empty,
+                                    Country = empty,
+                                    Four = empty,
+                                    Three = empty,
+                                };
+                            }
+
+
+                            //机型判断
+                            string airModel = item["AirModel"].ToString();
+                            airModel = GeneralMethod.GetLonger(airModel!.Substring(0, 1)) + airModel;
+
+                            string flightTime = item["FlightTime"].ToString();
+                            if (flightTime!.Contains(":"))
+                            {
+                                flightTime = flightTime.Replace(":", "小时");
+                                flightTime += "分钟";
+                            }
+                            if (flightTime.Contains("H"))
+                            {
+                                flightTime = flightTime.Replace("H", "小时");
+                            }
+                            if (flightTime.Contains("M"))
+                            {
+                                flightTime = flightTime.Replace("M", "分钟");
+                            }
+
+                            //航班号
+                            string flightcode = item["Fliagtcode"].ToString();
+
+                            var aircompany = _sqlSugar.Queryable<Res_AirCompany>().First(x => x.ShortCode.ToUpper() == flightcode!.Substring(0, 2).ToUpper() && x.IsDel == 0);
+
+                            var hsEmpty = "【此航司" + flightcode!.Substring(0, 2).ToUpper() + "未收录,请机票同事录入】";
+                            if (aircompany == null)
+                            {
+                                aircompany = new Res_AirCompany
+                                {
+                                    CnName = hsEmpty,
+                                    EnName = hsEmpty,
+                                    ShortCode = hsEmpty,
+                                };
+                            }
+
+                            //从成都天府国际机场搭乘四川航空公司3U3961飞往东京
+                            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()}航站楼(中转时间: 行李直达)";
+                            }
+                            else
+                            {
+                                trip += $"抵达{end_Object.AirPort}{item["EndBuilding"].ToString().Trim()}航站楼,办理入境手续,之后前往提取行李\r\n";
+                            }
+
+                        }
+
+                        chiarr.Add(new Grp_ApprovalTravelDetails
+                        {
+                            Time = takeOffTime.ToString("HH:mm") + "-" + fallToTime.ToString("HH:mm"),
+                            CreateTime = DateTime.Now,
+                            CreateUserId = dto.Userid,
+                            ParentId = 0,
+                            Details = trip
+                        }) ;
+
+                        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('-');
+
+
+                    }
+
                     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;
@@ -12550,14 +12737,6 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                     appro.CreateUserId = dto.Userid;
                     appro.CreateTime = DateTime.Now;
 
-                    var chiarr = new List<Grp_ApprovalTravelDetails>();
-
-                    var tbSelect = dtBlack.Select(string.Format("Day = '{0}'", NewData.ToString("yyyy-MM-dd")));
-                    if (tbSelect.Length > 0)
-                    {
-
-                    }
-
                     foreach (var item in gwinfo)
                     {
                         Grp_ApprovalTravelDetails chi = new Grp_ApprovalTravelDetails();

+ 1 - 1
OASystem/OASystem.Api/OAMethodLib/GeneralMethod.cs

@@ -1782,7 +1782,7 @@ namespace OASystem.API.OAMethodLib
             return dt;
         }
         
-        private readonly static string[] excludeArr = new string[] { "[中转]", };
+        private readonly static string[] excludeArr = new string[] { "[中转]", "[转机]" };
 
         /// <summary>
         ///根据机票黑屏代码整理DataTable