Browse Source

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

leiy 2 years ago
parent
commit
d91e07f907

+ 7 - 3
OASystem/OASystem.Api/Controllers/BaiduOCRController.cs

@@ -68,8 +68,8 @@ namespace OASystem.API.Controllers
                     List<string> listSexStr = new List<string>() { "性别", "gender", "sex" };
                     List<string> listDOBStr = new List<string>() { "D.O.B", "出生年月", "生日", "出生日期" };
                     List<string> listIdCard = new List<string>() { "身份证号码", "身份证" };
-                    List<string> listOrganizationStr = new List<string>() { "工作单位", "organization", "单位", "所在单位及职务" };
-                    List<string> listJobStr = new List<string>() { "职务", "title", "职位" };
+                    List<string> listOrganizationStr = new List<string>() { "工作单位", "organization", "单位"};
+                    List<string> listJobStr = new List<string>() { "职务", "title", "职位", "所在单位及职务" , "单位及职务" };
                     List<string> listMobileStr = new List<string>() { "联系电话", "mobile" };
                     List<string> listAgeStr = new List<string>() { "年龄", "age" };
                     for (int i = 0; i < headerList.Count; i++)
@@ -125,7 +125,7 @@ namespace OASystem.API.Controllers
                             }
                             catch (Exception)
                             {
-                               throw new Exception("有未能识别的列请检查 : " + JsonConvert.SerializeObject(headerList.Select(x => x.words)));
+                               throw new Exception("有未能识别的列请检查 : " + JsonConvert.SerializeObject(headerList.Select(x => x.words)));
                             }
 
                             if (words.IsNullOrWhiteSpace())
@@ -204,6 +204,10 @@ namespace OASystem.API.Controllers
 
                         if(!(client.FirstName + client.LastName + client.Pinyin + client.CompanyFullName + client.Job + client.Phone + client.Birthday).IsNullOrWhiteSpace())
                         {
+                            if (string.IsNullOrWhiteSpace(client.CompanyFullName))
+                            {
+                                client.CompanyFullName = "暂无";
+                            }
                             ClientArr.Add(client);
                         }
                     }

+ 1234 - 0
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -5220,6 +5220,1240 @@ namespace OASystem.API.Controllers
             return Ok(jw);
         }
 
+        #region OP行程单
+
+        /// <summary>
+        /// OP行程单初始化
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult InitOpTravel(InitOpTravelDto dto)
+        {
+            var jw = JsonView(false);
+            var groupList = _sqlSugar.Queryable<Grp_DelegationInfo>().Where(x => x.IsDel == 0).OrderByDescending(x => x.Id).ToList();
+            var group = groupList.First();
+            var diid = dto.Diid == -1 ? group?.Id : dto.Diid;
+
+            if (group == null)
+            {
+                jw.Msg = "暂无团组!";
+                return Ok(jw);
+            }
+
+            group = groupList.Find(x => x.Id == diid);
+            if (group == null)
+            {
+                jw.Msg = "请输入正确的团组ID!";
+                return Ok(jw);
+            }
+
+            string city = string.Empty;
+            var blackCode = _sqlSugar.Queryable<Air_TicketBlackCode>().Where(x => x.IsDel == 0 && x.DiId == diid).ToList();
+            if (blackCode.Count > 0)
+            {
+                var black = blackCode.First();
+                black.BlackCode = black.BlackCode == null ? "" : black.BlackCode;
+                var blackSp =  Regex.Split(black.BlackCode, "\\d+\\.", RegexOptions.IgnoreCase).Where(x=>!string.IsNullOrWhiteSpace(x)).ToArray();
+                if (blackSp.Length > 0)
+                {
+                    try
+                    {
+                        var cityArrCode = new List<string>(20);
+                        foreach (var item in blackSp)
+                        {
+                            var itemSp = item.Split(' ').Where(x => !string.IsNullOrWhiteSpace(x)).ToList();
+                            var IndexSelect = itemSp[2];
+                            var cityArrCodeLength = cityArrCode.Count - 1;
+                            var startCity = IndexSelect.Substring(0, 3);
+                            if (cityArrCodeLength > 0)
+                            {
+                                var arrEndCity = cityArrCode[cityArrCodeLength];
+                                if (arrEndCity != startCity)
+                                {
+                                    cityArrCode.Add(startCity.ToUpper());
+                                }
+                            }
+                            else
+                            {
+                                cityArrCode.Add(startCity.ToUpper());
+                            }
+                            
+                            var endCity = IndexSelect.Substring(3, 3);
+                            cityArrCode.Add(endCity.ToUpper());
+                        }
+
+                        var cityThree = string.Empty;
+                        cityArrCode.ForEach(x => cityThree += "'" + x + "',");
+                        cityThree = cityThree.TrimEnd(',');
+                        if (string.IsNullOrWhiteSpace(cityThree))
+                        {
+                            throw new
+                                 Exception("error");
+                        }
+
+                        string sql = $"SELECT * FROM Res_ThreeCode rtc WHERE UPPER(rtc.Three) in ({cityThree}) ";
+                        var cityArr = _sqlSugar.SqlQueryable<Res_ThreeCode>(sql).ToList();
+                        foreach (var item in cityArrCode)
+                        {
+                            var find =  cityArr.Find(x => x.Three.ToUpper() == item.ToUpper());
+                            if (find != null)
+                            {
+                                city += find.City + "/";
+                            }
+                            else
+                            {
+                                city += item + "三字码未收入/";
+                            }
+                        }
+                        city = city.TrimEnd('/');
+                    }
+                    catch (Exception e)
+                    {
+                        city = "黑屏代码格式不正确!";
+                    }
+                }
+
+            }
+
+
+            var OpTravelList =  _sqlSugar.Queryable<Grp_TravelList>().Where(x=>x.Diid == diid && x.IsDel == 0).OrderBy(x=>x.Date).Select(x=> new TravelArrView
+            {
+                Date = x.Date,
+                Days = x.Days,
+                Diffgroup = x.Diffgroup,
+                Diid = x.Diid,
+                Traffic_First = x.Traffic_First,
+                Traffic_Second = x.Traffic_Second,
+                Trip = x.Trip,
+                WeekDay = x.WeekDay,
+                 Id = x.Id
+            }).ToList();
+
+            jw.Data = new
+            {
+                groupList = groupList.Select(x => new
+                {
+                    x.Id,
+                    x.TeamName,
+                    x.TourCode
+                }).ToList(),
+                groupInfo = new
+                {
+                    group.VisitDays,
+                    group.TourCode,
+                    group.VisitPNumber,
+                    group.TeamName,
+                    city
+                },
+                OpTravelList
+            };
+            jw.Code = 200;
+            jw.Msg = "操作成功!";
+
+            return Ok(jw);
+        }
+
+        /// <summary>
+        /// 删除团组行程单
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult DelTravel(DelOpTravelDto dto)
+        {
+            var jw = JsonView(false);
+
+            if (dto.UserId <= 0 || dto.Diid <= 0)
+            {
+                jw.Msg = "请输入正确的参数!";
+                return Ok(jw);
+            }
+
+            var isTrue = _sqlSugar.Updateable<Grp_TravelList>().Where(x => x.Diid == dto.Diid && x.IsDel == 0)
+                .SetColumns(x => new Grp_TravelList
+            {
+                DeleteTime = DateTime.Now.ToString("yyyy-MM-dd"),
+                DeleteUserId = dto.UserId,
+                IsDel = 1,
+            }).ExecuteCommand();
+            jw = JsonView(true);
+            return Ok(jw);
+        }
+
+        /// <summary>
+        /// 行程单保存
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult TravelSave(TravelSaveDto dto)
+        {
+            var jw = JsonView(false);
+            if(dto.Arr.Count > 0)
+            {
+                try
+                {
+                    _sqlSugar.BeginTran();
+                    foreach (var item in dto.Arr)
+                    {
+                        if (item.Id == 0)
+                        {
+                            throw new Exception("请传入正确的Id");
+                        }
+
+                        _sqlSugar.Updateable<Grp_TravelList>().Where(x => x.Id == item.Id)
+                            .SetColumns(x => new Grp_TravelList
+                            {
+                                Trip = item.Trip
+                            }).ExecuteCommand();
+                    }
+                    _sqlSugar.CommitTran();
+                    jw = JsonView(true);
+                }
+                catch (Exception ex)
+                {
+                    _sqlSugar.RollbackTran();
+                    jw.Msg = "程序异常!" + ex.Message;
+                }
+            }
+            else
+            {
+                jw.Msg = "请传入正确的参数!";
+            }
+
+            return Ok(jw);
+        }
+
+
+        /// <summary>
+        /// 导出行程单
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult ExportTravel(InitOpTravelDto dto)
+        {
+            var jw = JsonView(false);
+            //数据源
+            List<Grp_TravelList> _travelList = new List<Grp_TravelList>();
+            int diid = 0;
+            var Find =  _sqlSugar.Queryable<Grp_DelegationInfo>().First(x=>x.Id == dto.Diid);
+            if (Find == null)
+            {
+                jw.Msg = "请选择正确的团组!";
+                return Ok(jw);
+            }
+            else
+            {
+                diid = Find.Id;
+            }
+
+            DataTable dtBlack = null;
+            try
+            {
+                dtBlack = GetTableByBlackCode(diid);
+            }
+            catch (Exception)
+            {
+                jw.Msg = "机票黑屏代码有误!";
+                return Ok(jw);
+            }
+
+            string CityStr1 = "";
+            List<string> countriesList = new List<string>();
+            List<string> cityList = new List<string>();
+
+            string countriesIntroduction = "";
+            string cityIntroduction = "";
+            string timeDifference = "";
+            string currExchangeRate = "";
+            string txt_itemPrepare = "";
+            string txt_specialReminder = "";
+            string txt_cGPrecautions = "";
+            string txt_yGCG = "";
+            string txt_conduct = "";
+            string txt_commonEnglish = "";
+
+            if (dtBlack == null && (dtBlack.Rows[0]["Day"] == null || dtBlack.Rows[0]["Day"].ToString() == ""))
+            {
+                //提示
+
+                //PublicCode.GetAlertMsg(this, GetType(), dt.Rows[dt.Rows.Count - 1]["Error"].ToString());
+            }
+            else
+            {
+                //创建三字码示例
+                Res_ThreeCode t = new Res_ThreeCode();
+                //城市缓存
+                string city = "";
+
+                //出访城市
+                for (int i = 0; i < dtBlack.Rows.Count; i++)
+                {
+                    if ((i + 1) < dtBlack.Rows.Count && dtBlack.Rows[i]["Three"].ToString() == dtBlack.Rows[i + 1]["Three"].ToString())
+                    {
+                        continue;
+                    }
+                    if (dtBlack.Rows.Count > 0 && (dtBlack.Rows[i]["Three"].ToString() != null && dtBlack.Rows[i]["Three"].ToString() != ""))
+                    {
+                        //出发城市
+                        string cityTemp = dtBlack.Rows[i]["Three"].ToString().Replace("/", string.Empty).Substring(0, 3);
+                        t = _sqlSugar.Queryable<Res_ThreeCode>().First(x => x.Three == cityTemp && x.IsDel == 0);
+                        if (t != null)
+                        {
+                            city = city + "/" + t.City;
+                        }
+                        else
+                        {
+                            city = city + "/【" + cityTemp + "未收录,请联系机票同事录入】";
+                        }
+
+                        if (i == dtBlack.Rows.Count - 1)
+                        {
+                            //抵达城市
+                            cityTemp = dtBlack.Rows[i]["Three"].ToString().Replace("/", string.Empty).Substring(3, 3);
+                            t = _sqlSugar.Queryable<Res_ThreeCode>().First(x => x.Three == cityTemp && x.IsDel == 0);
+                            if (t != null)
+                            {
+                                city = city + "/" + t.City;
+                            }
+                            else
+                            {
+                                city = city + "/【" + cityTemp + "未收录,请联系机票同事录入】";
+                            }
+                        }
+                    }
+                }
+                if (city != "" && city != null)
+                {
+                    string[] cityStr2 = city.Split('/');
+                    string[] strs = cityStr2.Distinct().ToArray(); ;
+                    string str = "";
+                    foreach (var s in strs)
+                    {
+                        str += s + "/";
+                    }
+                    str = str.TrimStart('/');
+                    str = str.TrimEnd('/');
+                    //lblTourCity.Text = "去重前:" + city.TrimStart('/') + "\n 去重后:" + str;
+                    CityStr1 = city.TrimStart('/');
+                }
+
+
+                // 行程repeater
+                if (GetByDiid(diid).Count > 0)
+                {
+                    _travelList = GetByDiid(diid).Where(x => x.Issel == 1 && x.IsDel == 0).ToList();
+                }
+                else
+                {
+
+                    //生成该时间段日期
+                    List<string> timeList = GetTimeListByDataTable(dtBlack);
+
+                    if (timeList != null)
+                    {
+                        string[] str = new string[timeList.Count];
+                        //rpData.DataSource = str;
+                        //rpData.DataBind();
+                    }
+                }
+            }
+
+
+            //创建数据源Table
+            DataTable dtSource = new DataTable();
+            dtSource.Columns.Add("Days", typeof(string));
+            dtSource.Columns.Add("Date", typeof(string));
+            dtSource.Columns.Add("Week", typeof(string));
+            dtSource.Columns.Add("Traffic", typeof(string));
+            dtSource.Columns.Add("Trip", typeof(string));
+
+            //获取数据,放到datatable
+            foreach (var item in _travelList)
+            {
+                DataRow dr = dtSource.NewRow();
+                dr["Days"] = item.Days;
+                dr["Date"] = item.Date;
+                dr["Week"] = item.WeekDay;
+                dr["Traffic"] = item.Traffic_First
+                                + "\r\n"
+                                + item.Traffic_Second;
+                if (item.Trip.Replace("(此地区为黄热病地区,请注意打疫苗)", "").Length < 15)
+                {
+                    item.Trip += @"
+08:00 早餐于酒店;
+09:00 公务活动;
+10:30 公务活动;
+12:00 午餐于当地餐厅;
+14:00 公务活动;
+16:00 公务活动;
+18:00 晚餐于当地餐厅;
+19:00 入住酒店休息;";
+                }
+
+                dr["Trip"] = item.Trip;
+                dtSource.Rows.Add(dr);
+            }
+
+            //lblTeamName.Text = di.TourCode;
+            //lblVisitDays.Text = di.VisitDays.ToString();
+            //lblVisitDays2.Text = di.VisitDays.ToString();
+            //lblPNumber.Text = di.VisitPNumber.ToString();
+            //lblGroup.Text = di.TeamName.ToString();
+
+            Dictionary<string, string> dic = new Dictionary<string, string>();
+            dic.Add("Dele", Find.TeamName.ToString() + GetNum(Find.VisitDays.ToString()));
+            dic.Add("City", CityStr1);
+            dic.Add("Days", Find.VisitDays.ToString());
+            dic.Add("DeleCode", Find.TourCode);
+            dic.Add("Pnum", Find.VisitPNumber.ToString());
+            dic.Add("Pnum2", Find.VisitPNumber.ToString());
+
+            List<Crm_DeleClient> leader = GetByDiidClient(Find.Id);
+            if (leader != null && leader.Count > 0)
+            {
+                dic.Add("Leader", GetByDiidClient(Find.Id)[0].LastName + GetByDiidClient(Find.Id)[0].FirstName);
+            }
+            else
+            {
+                dic.Add("Leader", "");
+            }
+            dic.Add("Pnum3", Find.VisitPNumber.ToString());
+            int UserId = 253;
+            dic.Add("OP", "");
+            dic.Add("OPTel", "");
+            //dic.Add("OP", "OP姓名");
+            //dic.Add("OPTel", "OP手机号码");
+
+            string countriesStr = "";
+            countriesList.ForEach(s => countriesStr += s + "、");
+            countriesStr = countriesStr.TrimEnd('、');
+
+            string cityStr = "";
+            cityList.ForEach(s => cityStr += s + "、");
+            cityStr = cityStr.TrimEnd('、');
+
+            //下方数据
+            dic.Add("selCountries", countriesStr == null ? "" : countriesStr);
+            dic.Add("selCity", cityStr == null ? "" : cityStr);
+            dic.Add("countriesIntroduction", countriesIntroduction == null ? "" : countriesIntroduction);
+            dic.Add("CityIntroduction", cityIntroduction == null ? "" : cityIntroduction);
+            dic.Add("timeDifference", timeDifference == null ? "" : timeDifference);
+            dic.Add("currExchangeRate", currExchangeRate == null ? "" : currExchangeRate);
+            dic.Add("temperature", "");
+            dic.Add("txt_itemPrepare", txt_itemPrepare == null ? "" : txt_itemPrepare);
+            dic.Add("txt_specialReminder", txt_specialReminder == null ? "" : txt_specialReminder);
+            dic.Add("txt_cGPrecautions", txt_cGPrecautions == null ? "" : txt_cGPrecautions);
+            dic.Add("txt_yGCG", txt_yGCG == null ? "" : txt_yGCG);
+            dic.Add("txt_conduct", txt_conduct == null ? "" : txt_conduct);
+            dic.Add("txt_commonEnglish", txt_commonEnglish == null ? "" : txt_commonEnglish);
+
+            //模板路径
+            string tempPath = AppSettingsHelper.Get("WordBasePath") + "Travel/日行程3.docx";
+            
+            //载入模板
+            Document doc = null;
+            DocumentBuilder builder = null;
+            try
+            {
+                //载入模板
+                doc = new Document(tempPath);
+                builder = new DocumentBuilder(doc);
+            }
+            catch (Exception)
+            {
+                jw.Msg = "模板位置不存在!";
+                return Ok(jw);
+            }
+
+
+            foreach (var key in dic.Keys)
+            {
+                Bookmark bookmark = doc.Range.Bookmarks[key];
+                if (bookmark != null)
+                {
+                    builder.MoveToBookmark(key);
+                    builder.Write(dic[key]);
+                }
+            }
+
+            //获取word里所有表格
+            NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true);
+            //获取所填表格的序数
+            Aspose.Words.Tables.Table tableOne = allTables[0] as Aspose.Words.Tables.Table;
+
+            try
+            {
+                //循环赋值
+                for (int i = 0; i < dtSource.Rows.Count; i++)
+                {
+                    builder.MoveToCell(0, i + 1, 0, 0);
+                    builder.Write(dtSource.Rows[i]["Days"].ToString());
+
+                    builder.MoveToCell(0, i + 1, 1, 0);
+                    builder.Write(dtSource.Rows[i]["Date"].ToString() + "\r\n" + dtSource.Rows[i]["Week"].ToString());
+
+                    builder.MoveToCell(0, i + 1, 2, 0);
+                    builder.Write(dtSource.Rows[i]["Traffic"].ToString());
+
+                    var trip = dtSource.Rows[i]["Trip"].ToString();
+                    builder.MoveToCell(0, i + 1, 3, 0);
+                    builder.Write(trip);
+
+                    var cell = (Aspose.Words.Tables.Cell)doc.GetChild(NodeType.Cell, ((i + 2) * 4) - 1, true);
+                    var paragraphs = cell.GetChildNodes(NodeType.Paragraph, true);
+
+                    // 获取特定索引的段落
+                    Paragraph paragraph = (Paragraph)paragraphs[0];
+                    Run run = paragraph.Runs[0];
+                    Aspose.Words.Font font = run.Font;
+                    font.Name = "黑体";
+
+                    //设置双休红色
+                    cell = (Aspose.Words.Tables.Cell)doc.GetChild(NodeType.Cell, ((i + 2) * 4) - 3, true);
+                    paragraphs = cell.GetChildNodes(NodeType.Paragraph, true);
+                    paragraph = (Paragraph)paragraphs[1];
+                    if (paragraph.GetText().Contains("星期六") || paragraph.GetText().Contains("星期日"))
+                    {
+                        run = paragraph.Runs[0];
+                        font = run.Font;
+                        font.Color = Color.Red;
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+
+            //删除多余行
+            while (tableOne.Rows.Count > 1 + dtSource.Rows.Count)
+            {
+                tableOne.Rows.RemoveAt(1 + dtSource.Rows.Count);//(1+dtSource.Rows.Count + 1)-1
+            }
+
+            string savePath = AppSettingsHelper.Get("WordBasePath") + "Travel/export/";
+            if (!Directory.Exists(savePath))
+            {
+                try
+                {
+                    Directory.CreateDirectory(savePath);
+                }
+                catch
+                {
+
+                }
+            }
+            string path = savePath + Find.TeamName + "出访日程.docx";
+
+            try
+            {
+                doc.Save(path, Aspose.Words.SaveFormat.Doc);
+                jw = JsonView(true,"导出成功", path);
+            }
+            catch (Exception)
+            {
+                jw = JsonView(false);
+            }
+
+            return Ok(jw);
+        }
+
+        /// <summary>
+        ///根据机票黑屏代码整理DataTable
+        /// </summary>
+        /// <param name="diid"></param>
+        /// <returns></returns>
+        DataTable GetTableByBlackCode(int diid)
+        {
+            //黑屏代码信息
+            List<Air_TicketBlackCode> listcode = _sqlSugar.Queryable<Air_TicketBlackCode>().Where(x => x.DiId == diid && x.IsDel == 0).ToList();
+
+            //测试数据为序号,航班号,起飞日期,三字码,起飞时刻,到达时刻,出发航站楼,到达航站楼,机型,飞行时间
+            //1.3U8391   TU17NOV CTUCAI  0220 0715   T1 T2  330  10H55M
+            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”新增的黑屏代码
+
+            //判断是否录入黑屏代码
+            if (listcode.Count() == 0 || listcode == null)
+            {
+                dt.Rows.Add(null, null, null, null, null, null, null, null, null, null, null, "黑屏代码未录入!", null);
+            }
+            else
+            {
+                //读取单段黑屏代码
+                for (int i = 0; i < listcode.Count; i++)
+                {
+                    //去除序号
+                    string[] CodeList = Regex.Split(listcode[i].BlackCode, "\\d+\\.", RegexOptions.IgnoreCase);
+                    //去除多余空格,方法一Linq扩展方法
+                    CodeList = CodeList.Where(str => str != "").ToArray();
+                    CodeList = CodeList.Where(str => str != " ").ToArray();
+
+                    //年
+                    int year = Convert.ToInt32(DateTime.Now.Year.ToString());
+
+                    //读取单条黑屏代码
+                    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);
+
+                        //string[] Info = CodeList[j].Replace("\r\n", string.Empty).Replace("\\r\\n", string.Empty)
+                        //                   .TrimStart().TrimEnd().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
+
+                        //去除多余空格
+                        Info = Info.Where(str => str != "").ToArray();
+                        Info = Info.Where(str => str != " ").ToArray();
+
+                        //判断黑屏代码是否正确拆分; 理应拆成9段
+                        if (Info.Count() < 9)
+                        {
+                            dt.Rows.Add(null, null, null, null, null, null, null, null, null, null, null, "本团组第" + (i + 1) + "段黑屏代码中第" + (j + 1) + " 条有误,请联系机票同事核对", null);
+                        }
+                        else
+                        {
+                            try
+                            {
+                                //月                  
+                                int month = Convert.ToInt32(GetLonger(Info[1].Substring(4, 3)));
+                                //日
+                                int day = Convert.ToInt32(Info[1].Substring(2, 2));
+
+                                #region 逐一比较月份,判断是否翻年;逐一比较三字码顶真,判断是否跑错机场
+                                if (j > 0)
+                                {
+                                    string[] Temp = CodeList[j - 1].Replace("\r\n", string.Empty).Replace("\\r\\n", string.Empty)
+                                                  .TrimStart().TrimEnd().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
+                                    Temp = Temp.Where(str => str != "").ToArray();
+                                    Temp = Temp.Where(str => str != " ").ToArray();
+                                    int monthTemp = Convert.ToInt32(GetLonger(Temp[1].Substring(4, 3)));
+                                    // 如果相邻月份之差小于0,则证明次一条年份需+1
+                                    if (month - monthTemp < 0)
+                                    {
+                                        year = year + 1;
+                                    }
+                                    //如果相邻代码三字码不顶真,提醒
+                                    string FootThree = Temp[2].Substring(3, 3);
+                                    string HeadThree = Info[2].Substring(0, 3);
+                                    if (FootThree != HeadThree)
+                                    {
+                                        //DelegationInfoService s = new DelegationInfoService();
+                                        //UsersService us = new UsersService();
+                                        //GroupsTaskAssignmentService gts = new GroupsTaskAssignmentService();
+
+                                        //77	行程
+                                        List<Grp_GroupsTaskAssignment> list2 = _sqlSugar.Queryable<Grp_GroupsTaskAssignment>().Where(x => x.CTId == 77 && x.DIId == diid && x.IsDel == 0).ToList();
+                                        foreach (var temp in list2)
+                                        {
+                                            //if (temp.UId != 21)
+                                            //SendAndReturn(us.GetUsersByID(temp.UId).Email,
+                                            //    "黑屏代码提醒",
+                                            //   s.GetDelegationInfoByID(diid).TeamName + "的机票黑屏代码中,相邻航段的三字码不连续,请查看!");
+                                        }
+
+                                        //85	机票预订
+                                        List<Grp_GroupsTaskAssignment> list6 = _sqlSugar.Queryable<Grp_GroupsTaskAssignment>().Where(x => x.CTId == 85 && x.DIId == diid && x.IsDel == 0).ToList();
+                                        foreach (var temp in list6)
+                                        {
+                                            //if (temp.UId != 21)
+                                            //SendAndReturn(us.GetUsersByID(temp.UId).Email,
+                                            //    "黑屏代码提醒",
+                                            //     s.GetDelegationInfoByID(diid).TeamName + "的机票黑屏代码中,相邻航段的三字码不连续,请查看!");
+                                        }
+                                    }
+
+                                }
+                                #endregion
+
+
+                                #region 判断到达日期是否需要加1
+                                if (Info[4].Contains("+"))
+                                {
+                                    //日期+1
+                                    day = day + 1;
+
+                                    //判断是否进入下一月
+                                    if (day > Convert.ToInt32(GetDaysByMonth(Info[1].Substring(4, 3), year)))
+                                    {
+                                        day = day - Convert.ToInt32(GetDaysByMonth(Info[1].Substring(4, 3), year));
+                                        month = month + 1;
+
+                                        //判断是否进入下一年
+                                        if (month > 12)
+                                        {
+                                            month = month - 12;
+                                            year = year + 1;
+                                        }
+                                    }
+
+                                    //月份整理格式
+                                    string monthTemp = month.ToString();
+                                    if (month < 10)
+                                    {
+                                        monthTemp = "0" + monthTemp;
+                                    }
+                                    //日期整理格式
+                                    string daytemp = day.ToString();
+                                    if (day < 10)
+                                    {
+
+                                        daytemp = "0" + daytemp;
+                                    }
+
+                                    string temp = Info[4].Split('+')[0];
+
+                                    //添加起飞数据
+                                    dt.Rows.Add(Info[0],
+                                       Info[1],
+                                       Info[2],
+                                       Info[3],
+                                       temp,
+                                       Info[5],
+                                       Info[6],
+                                       Info[7],
+                                       Info[8],
+                                       year + "-" + GetLonger(Info[1].Substring(4, 3)) + "-" + Info[1].Substring(2, 2),
+                                       year + "-" + monthTemp + "-" + daytemp,
+                                       "",
+                                       "0");
+                                    //加1天,添加到达数据
+                                    dt.Rows.Add(Info[0],
+                                       Info[1].Replace(Info[1].Substring(2, 2), daytemp),
+                                       Info[2],
+                                       Info[3],
+                                       temp,
+                                       Info[5],
+                                       Info[6],
+                                       Info[7],
+                                       Info[8],
+                                       year + "-" + monthTemp + "-" + daytemp,
+                                       year + "-" + monthTemp + "-" + daytemp,
+                                       "",
+                                       "1");
+                                }
+                                else
+                                {
+                                    //月份整理格式
+                                    string monthTemp = month.ToString();
+                                    if (month < 10)
+                                    {
+                                        monthTemp = "0" + monthTemp;
+                                    }
+                                    //日期整理格式
+                                    string daytemp = day.ToString();
+                                    if (day < 10)
+                                    {
+
+                                        daytemp = "0" + daytemp;
+                                    }
+
+                                    dt.Rows.Add(Info[0],
+                                        Info[1],
+                                        Info[2],
+                                        Info[3],
+                                        Info[4],
+                                        Info[5],
+                                        Info[6],
+                                        Info[7],
+                                        Info[8],
+                                        year + "-" + monthTemp + "-" + daytemp,
+                                        year + "-" + monthTemp + "-" + daytemp,
+                                        "",
+                                        "0");
+                                }
+                                #endregion
+                            }
+                            catch (Exception ex)
+                            {
+                                string exstr = ex.Message.ToString();
+                            }
+                        }
+
+                    }
+
+                    //排序
+                    dt.DefaultView.Sort = "Day asc";
+                    dt = dt.DefaultView.ToTable();
+                }
+            }
+
+            return dt;
+        }
+
+        /// <summary>
+        /// 根据团组编号查询信息
+        /// </summary>
+        /// <returns>返回空或者对象信息</returns>
+        List<Grp_TravelList> GetByDiid(int Diid)
+        {
+            //调用获取单个对象的方法
+            return _sqlSugar.Queryable<Grp_TravelList>().Where(x => x.Diid == Diid && x.IsDel == 0).ToList();
+        }
+
+
+        /// <summary>
+        /// 20210816
+        /// 根据datatable生成某一时间段的日期
+        /// </summary>
+        /// <param name="dt">黑屏代码生成的datatable</param>
+        /// <returns></returns>
+        List<string> GetTimeListByDataTable(DataTable dt)
+        {
+            if (dt.Rows[0]["Day"].ToString() != "")
+            {
+                DateTime datestart = Convert.ToDateTime(dt.Rows[0]["Day"].ToString());
+                DateTime dateend = Convert.ToDateTime(dt.Rows[dt.Rows.Count - 1]["ArrivedDate"].ToString());
+
+                List<string> timeList = new List<string>();
+                while (datestart <= dateend)
+                {
+                    timeList.Add(datestart.ToString("yyyy-MM-dd"));
+                    datestart = datestart.AddDays(1);
+                }
+
+                return timeList;
+            }
+            return null;
+        }
+
+
+        /// <summary>
+        /// 根据大写数字返回小写数字或根据小写数字返回大写数字
+        /// </summary>
+        /// <param name="num"></param>
+        /// <returns></returns>
+         string GetNum(string num)
+        {
+
+            string str = "";
+            switch (num)
+            {
+                case "1":
+                    str = "一";
+                    break;
+                case "2":
+                    str = "二";
+                    break;
+                case "3":
+                    str = "三";
+                    break;
+                case "4":
+                    str = "四";
+                    break;
+                case "5":
+                    str = "五";
+                    break;
+                case "6":
+                    str = "六";
+                    break;
+                case "7":
+                    str = "七";
+                    break;
+                case "8":
+                    str = "八";
+                    break;
+                case "9":
+                    str = "九";
+                    break;
+                case "10":
+                    str = "十";
+                    break;
+                case "11":
+                    str = "十一";
+                    break;
+                case "12":
+                    str = "十二";
+                    break;
+                case "一":
+                    str = "1";
+                    break;
+                case "二":
+                    str = "2";
+                    break;
+                case "三":
+                    str = "3";
+                    break;
+                case "四":
+                    str = "4";
+                    break;
+                case "五":
+                    str = "5";
+                    break;
+                case "六":
+                    str = "6";
+                    break;
+                case "七":
+                    str = "7";
+                    break;
+                case "八":
+                    str = "8";
+                    break;
+                case "九":
+                    str = "9";
+                    break;
+                case "十":
+                    str = "10";
+                    break;
+                case "十一":
+                    str = "11";
+                    break;
+                case "十二":
+                    str = "12";
+                    break;
+            }
+            return str;
+        }
+
+         List<Crm_DeleClient> GetByDiidClient(int DIID)
+        {
+            return _sqlSugar.Queryable<Crm_DeleClient>().Where(x => x.DiId == DIID && x.IsDel == 0).ToList();
+        }
+
+        /// <summary>
+        /// 根据星期,月份的缩写,转换成数字或者全称
+        /// 根据币种中文名称返回币种代码
+        /// 根据数字返回机型型号【2、3开头的就是空客,比如空客320,7开头的就是波音,比如波音777】
+        /// 20210903贾文滔
+        /// </summary>
+        /// <param name="startDate"></param>
+        /// <param name="endDate"></param>
+        /// <returns></returns>
+         string GetLonger(string temp)
+        {
+            string str = "";
+            switch (temp.ToUpper())
+            {
+                case "美元":
+                    str = "USD";
+                    break;
+                case "日元":
+                    str = "JPY";
+                    break;
+                case "英镑":
+                    str = "GBP";
+                    break;
+                case "欧元":
+                    str = "EUR";
+                    break;
+                case "港币":
+                    str = "HKD";
+                    break;
+                case "MO":
+                    str = "星期一";
+                    break;
+                case "TU":
+                    str = "星期二";
+                    break;
+                case "WE":
+                    str = "星期三";
+                    break;
+                case "TH":
+                    str = "星期四";
+                    break;
+                case "FR":
+                    str = "星期五";
+                    break;
+                case "SA":
+                    str = "星期六";
+                    break;
+                case "SU":
+                    str = "星期天";
+                    break;
+                case "JAN":
+                    str = "01";
+                    break;
+                case "FEB":
+                    str = "02";
+                    break;
+                case "MAR":
+                    str = "03";
+                    break;
+                case "APR":
+                    str = "04";
+                    break;
+                case "MAY":
+                    str = "05";
+                    break;
+                case "JUN":
+                    str = "06";
+                    break;
+                case "JUL":
+                    str = "07";
+                    break;
+                case "AUG":
+                    str = "08";
+                    break;
+                case "SEP":
+                    str = "09";
+                    break;
+                case "OCT":
+                    str = "10";
+                    break;
+                case "NOV":
+                    str = "11";
+                    break;
+                case "DEC":
+                    str = "12";
+                    break;
+                case "MONDAY":
+                    str = "星期一";
+                    break;
+                case "TUESDAY":
+                    str = "星期二";
+                    break;
+                case "WEDNESDAY":
+                    str = "星期三";
+                    break;
+                case "THURSDAY":
+                    str = "星期四";
+                    break;
+                case "FRIDAY":
+                    str = "星期五";
+                    break;
+                case "SATURDAY":
+                    str = "星期六";
+                    break;
+                case "SUNDAY":
+                    str = "星期日";
+                    break;
+                case "01":
+                    str = "JAN";
+                    break;
+                case "02":
+                    str = "FEB";
+                    break;
+                case "03":
+                    str = "MAR";
+                    break;
+                case "04":
+                    str = "APR";
+                    break;
+                case "05":
+                    str = "MAY";
+                    break;
+                case "06":
+                    str = "JUN";
+                    break;
+                case "07":
+                    str = "JUL";
+                    break;
+                case "08":
+                    str = "AUG";
+                    break;
+                case "09":
+                    str = "SEP";
+                    break;
+                case "10":
+                    str = "OCT";
+                    break;
+                case "11":
+                    str = "NOV";
+                    break;
+                case "12":
+                    str = "DEC";
+                    break;
+                case "2":
+                    str = "空客A";
+                    break;
+                case "3":
+                    str = "空客A";
+                    break;
+                case "7":
+                    str = "波音";
+                    break;
+            }
+
+            return str;
+        }
+
+
+        /// <summary>
+        /// 根据月份返回天数
+        /// </summary>
+        /// <param name="temp"></param>
+        /// <returns></returns>
+         string GetDaysByMonth(string Month, int year)
+        {
+            string str = "";
+            //判断是否是闰年
+            if (DateTime.IsLeapYear(year) == false)
+            {
+                switch (Month.ToUpper())
+                {
+                    case "JAN":
+                        str = "31";
+                        break;
+                    case "FEB":
+                        str = "28";
+                        break;
+                    case "MAR":
+                        str = "31";
+                        break;
+                    case "APR":
+                        str = "30";
+                        break;
+                    case "MAY":
+                        str = "31";
+                        break;
+                    case "JUN":
+                        str = "30";
+                        break;
+                    case "JUL":
+                        str = "31";
+                        break;
+                    case "AUG":
+                        str = "31";
+                        break;
+                    case "SEP":
+                        str = "30";
+                        break;
+                    case "OCT":
+                        str = "31";
+                        break;
+                    case "NOV":
+                        str = "30";
+                        break;
+                    case "DEC":
+                        str = "31";
+                        break;
+                    case "01":
+                        str = "31";
+                        break;
+                    case "02":
+                        str = "28";
+                        break;
+                    case "03":
+                        str = "31";
+                        break;
+                    case "04":
+                        str = "30";
+                        break;
+                    case "05":
+                        str = "31";
+                        break;
+                    case "06":
+                        str = "30";
+                        break;
+                    case "07":
+                        str = "31";
+                        break;
+                    case "08":
+                        str = "31";
+                        break;
+                    case "09":
+                        str = "30";
+                        break;
+                    case "10":
+                        str = "31";
+                        break;
+                    case "11":
+                        str = "30";
+                        break;
+                    case "12":
+                        str = "31";
+                        break;
+                }
+            }
+            else
+            {
+                switch (Month.ToUpper())
+                {
+                    case "JAN":
+                        str = "31";
+                        break;
+                    case "FEB":
+                        str = "29";
+                        break;
+                    case "MAR":
+                        str = "31";
+                        break;
+                    case "APR":
+                        str = "30";
+                        break;
+                    case "MAY":
+                        str = "31";
+                        break;
+                    case "JUN":
+                        str = "30";
+                        break;
+                    case "JUL":
+                        str = "31";
+                        break;
+                    case "AUG":
+                        str = "31";
+                        break;
+                    case "SEP":
+                        str = "30";
+                        break;
+                    case "OCT":
+                        str = "31";
+                        break;
+                    case "NOV":
+                        str = "30";
+                        break;
+                    case "DEC":
+                        str = "31";
+                        break;
+                    case "01":
+                        str = "31";
+                        break;
+                    case "02":
+                        str = "29";
+                        break;
+                    case "03":
+                        str = "31";
+                        break;
+                    case "04":
+                        str = "30";
+                        break;
+                    case "05":
+                        str = "31";
+                        break;
+                    case "06":
+                        str = "30";
+                        break;
+                    case "07":
+                        str = "31";
+                        break;
+                    case "08":
+                        str = "31";
+                        break;
+                    case "09":
+                        str = "30";
+                        break;
+                    case "10":
+                        str = "31";
+                        break;
+                    case "11":
+                        str = "30";
+                        break;
+                    case "12":
+                        str = "31";
+                        break;
+                }
+
+            }
+
+
+            return str;
+        }
+        #endregion
+
+
         #endregion
 
         #region 团组成本

+ 63 - 0
OASystem/OASystem.Domain/Dtos/Groups/CarTouristGuideGroundDto.cs

@@ -190,4 +190,67 @@ namespace OASystem.Domain.Dtos.Groups
         ///// </summary>
         //public string Remark { get; set; }
     }
+
+
+    public class InitOpTravelDto
+    {
+        public int Diid { get; set;}
+    }
+
+    public class DelOpTravelDto
+    {
+        public int Diid { get; set; }
+
+        public int UserId { get; set; }
+    }
+
+    public class TravelSaveDto
+    {
+       public List<TravelArrView> Arr { get; set; }
+
+    }
+
+    public class TravelArrView
+    {
+        public int Id { get; set; }
+        /// <summary>
+        ///  团组ID
+        /// </summary>
+        public int Diid { get; set; }
+
+        /// <summary>
+        ///  天数
+        /// </summary>
+        public int Days { get; set; }
+
+        /// <summary>
+        ///  日期
+        /// </summary>
+        public string Date { get; set; }
+
+        /// <summary>
+        ///  星期
+        /// </summary>
+        public string WeekDay { get; set; }
+
+        /// <summary>
+        ///  当日第1个交通工具
+        /// </summary>
+        public string Traffic_First { get; set; }
+
+        /// <summary>
+        ///   当日第2个交通工具
+        /// </summary>
+        public string Traffic_Second { get; set; }
+
+        /// <summary>
+        ///  行程       
+        /// </summary>
+        public string Trip { get; set; }
+
+        /// <summary>
+        /// 区分属于第几次保存
+        /// </summary>
+        public int Diffgroup { get; set; }
+    }
 }

+ 16 - 9
OASystem/OpWin/Home.cs

@@ -47,7 +47,7 @@ namespace OpWin
         {
             comb_Delegation.ValueMember = "Id";
             comb_Delegation.DisplayMember = "TeamName";
-            soure = Db.Queryable<Grp_DelegationInfo>().ToList();
+            soure = Db.Queryable<Grp_DelegationInfo>().Where(x=>x.IsDel == 0).ToList();
             comb_Delegation.Items.AddRange(soure.ToArray());
             comb_Delegation.DropDownHeight = 200;
         }
@@ -67,9 +67,9 @@ namespace OpWin
             }
             catch (Exception)
             {
-                lblOutputResult.Text = "请正确的选择团组!";
+                lblOutputResult.Text = "请选择正确的团组!";
                 lblOutputResult.ForeColor = Color.Black;
-                MessageBox.Show("请正确的选择团组!");
+                MessageBox.Show("请选择正确的团组!");
                 return;
             }
 
@@ -90,9 +90,9 @@ namespace OpWin
 
             if (di == null)
             {
-                lblOutputResult.Text = "请正确的选择团组!";
+                lblOutputResult.Text = "请选择正确的团组!";
                 lblOutputResult.ForeColor = Color.Black;
-                MessageBox.Show("请正确的选择团组!");
+                MessageBox.Show("请选择正确的团组!");
                 return;
             }
 
@@ -4817,7 +4817,7 @@ namespace OpWin
 
                 //查询该三字码所对应城市的数据
                 //ThreeCode Pre_TC = tcs.getByThree(Pre_citycode);
-                Res_ThreeCode Pre_TC = Db.Queryable<Res_ThreeCode>().First(x => x.Three == Pre_citycode.ToUpper() && x.IsDel == 0 );
+                Res_ThreeCode Pre_TC = Db.Queryable<Res_ThreeCode>().First(x => x.Three.ToUpper() == Pre_citycode.ToUpper() && x.IsDel == 0 );
 
                 //验证是否存在三字码
                 if (Pre_TC == null)
@@ -4861,7 +4861,7 @@ namespace OpWin
         Res_AirCompany getByShortCode(string ShortCode)
         {
             //return this.excuteType("select * from AirCompany where Isdel=0 and ShortCode=@ShortCode", new SqlParameter("@ShortCode", ShortCode.ToUpper()));
-            return Db.Queryable<Res_AirCompany>().First(x => x.ShortCode == ShortCode.ToUpper() && x.IsDel == 0);
+            return Db.Queryable<Res_AirCompany>().First(x => x.ShortCode.ToUpper() == ShortCode.ToUpper() && x.IsDel == 0);
         }
 
         public class GoogleMapApiResult
@@ -5092,15 +5092,22 @@ namespace OpWin
             {
                 this.comb_Delegation.Items.AddRange(bindList.ToArray());
             }
+            else
+            {
+                this.comb_Delegation.Items.Add(new Grp_DelegationInfo { TeamName = "", Id = -1 });
+            }
+           
             cb.SelectionStart = cb.Text.Length;  // 设置光标位置,若不设置:光标位置始终保持在第一列,造成输入关键词的倒序排列
             cb.Cursor = Cursors.Default; //保持鼠标指针原来状态,有时候鼠标指针会被下拉框覆盖,所以要进行一次设置
-            cb.MaxDropDownItems = 8; // 自动弹出下拉框
-            
+            cb.MaxDropDownItems = 8; // 自动弹出下拉框            
         }
 
 
         private void comb_Delegation_MouseClick(object sender, MouseEventArgs e)
         {
+            comb_Delegation.Text = "";
+            comb_Delegation_TextUpdate(sender, e);
+            comb_Delegation.DropDownHeight = 200;
             comb_Delegation.DroppedDown = true;
         }
     }