|  | @@ -22,6 +22,7 @@ using Microsoft.AspNetCore.Mvc.Filters;
 | 
	
		
			
				|  |  |  using OASystem.Domain.Entities.Customer;
 | 
	
		
			
				|  |  |  using NPOI.SS.Formula.Functions;
 | 
	
		
			
				|  |  |  using OASystem.Domain.Dtos.CRM;
 | 
	
		
			
				|  |  | +using System.Diagnostics;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  namespace OASystem.API.Controllers
 | 
	
		
			
				|  |  |  {
 | 
	
	
		
			
				|  | @@ -2194,9 +2195,61 @@ namespace OASystem.API.Controllers
 | 
	
		
			
				|  |  |          //    }
 | 
	
		
			
				|  |  |          //}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        /// <summary>
 | 
	
		
			
				|  |  | +        /// 团组模块 - 出入境费用 - 子项 地区更改为 nationalTravelFee 的id
 | 
	
		
			
				|  |  | +        /// </summary>
 | 
	
		
			
				|  |  | +        /// <returns></returns>
 | 
	
		
			
				|  |  | +        [HttpPost]
 | 
	
		
			
				|  |  | +        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
 | 
	
		
			
				|  |  | +        public async Task<IActionResult> SetDayAndCostAreaChange()
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            try
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                var nationalTravelFee = await _sqlSugar.Queryable<Grp_NationalTravelFee>().ToListAsync();
 | 
	
		
			
				|  |  | +                var dayAndCost = await _sqlSugar.Queryable<Grp_DayAndCost>().Where(it => it.IsDel == 0).ToListAsync();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                var unite = dayAndCost.Where(a => nationalTravelFee.Any(b => a.Place.Trim() == b.City)).ToList(); //交集
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                var merge = dayAndCost.Where(a =>! nationalTravelFee.Any(b => a.Place.Trim() == b.City)).ToList(); //差集
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                foreach (var item in unite) //处理交集数据
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    dayAndCost.Where(it => it.Id == item.Id).FirstOrDefault().NationalTravelFeeId = nationalTravelFee.Where(it => it.City.Trim() == item.Place.Trim()).FirstOrDefault().Id;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                foreach (var item in merge) //处理差集数据
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    int nationalTravelFeeId = 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    var cityData = nationalTravelFee.Where(it => it.City.Trim() == item.Place.Trim()).FirstOrDefault();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    if (cityData != null) nationalTravelFeeId = cityData.Id;
 | 
	
		
			
				|  |  | +                    else
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        var countryData = nationalTravelFee.Where(it => it.Country.Trim() == item.Place.Trim()).FirstOrDefault();
 | 
	
		
			
				|  |  | +                        if (countryData != null) nationalTravelFeeId = countryData.Id;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    dayAndCost.Where(it => it.Id == item.Id).FirstOrDefault().NationalTravelFeeId = nationalTravelFeeId;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                //只更新dayAndCost 的 nationalTravelFeeId;
 | 
	
		
			
				|  |  | +                var result = _sqlSugar.Updateable(dayAndCost).UpdateColumns(it => new { it.NationalTravelFeeId }).ExecuteCommand();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (result > 0) return Ok(JsonView(true, "nationalTravelFeeId列更新成功!"));
 | 
	
		
			
				|  |  | +                else return Ok(JsonView(false, "nationalTravelFeeId列更新失败!"));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            catch (Exception ex)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                return Ok(JsonView(false, ex.Message));
 | 
	
		
			
				|  |  | +                throw;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          /// <summary>
 | 
	
		
			
				|  |  | -        /// 团组模块 - 出入境费用 - 基础数据源(团组名称/币种类型/出入境国家费用标准)
 | 
	
		
			
				|  |  | +        /// 团组模块 - 出入境费用 - 基础数据源(团组名称/币种类型)
 | 
	
		
			
				|  |  |          /// </summary>
 | 
	
		
			
				|  |  |          /// <returns></returns>
 | 
	
		
			
				|  |  |          [HttpPost]
 | 
	
	
		
			
				|  | @@ -2211,17 +2264,17 @@ namespace OASystem.API.Controllers
 | 
	
		
			
				|  |  |                  var currencyData = await _sqlSugar.SqlQueryable<SetDataInfoView>(currencySql).ToListAsync();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                string nationalTravelFeeSql = string.Format(@"Select ssd.Name as CurrencyCode, ssd.Remark as CurrencyName,su.CnName as LastUpdateUserName,gntf.* From Grp_NationalTravelFee gntf
 | 
	
		
			
				|  |  | -                                                                Left Join Sys_SetData ssd On ssd.STid = 66 And gntf.Currency = ssd.Id
 | 
	
		
			
				|  |  | -                                                                Left Join Sys_Users su On gntf.LastUpdateUserId = su.Id 
 | 
	
		
			
				|  |  | -                                                                Where gntf.Isdel = 0");
 | 
	
		
			
				|  |  | -                var nationalTravelFeeData = await _sqlSugar.SqlQueryable<NationalTravelFeeInfoView>(nationalTravelFeeSql).ToListAsync();
 | 
	
		
			
				|  |  | +                //string nationalTravelFeeSql = string.Format(@"Select ssd.Name as CurrencyCode, ssd.Remark as CurrencyName,su.CnName as LastUpdateUserName,gntf.* From Grp_NationalTravelFee gntf
 | 
	
		
			
				|  |  | +                //                                                Left Join Sys_SetData ssd On ssd.STid = 66 And gntf.Currency = ssd.Id
 | 
	
		
			
				|  |  | +                //                                                Left Join Sys_Users su On gntf.LastUpdateUserId = su.Id 
 | 
	
		
			
				|  |  | +                //                                                Where gntf.Isdel = 0");
 | 
	
		
			
				|  |  | +                //var nationalTravelFeeData = await _sqlSugar.SqlQueryable<NationalTravelFeeInfoView>(nationalTravelFeeSql).ToListAsync();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  return Ok(JsonView(true, "查询成功!",new {
 | 
	
		
			
				|  |  |                      GroupNameData = groupNameData.Data,
 | 
	
		
			
				|  |  |                      CurrencyData = currencyData,
 | 
	
		
			
				|  |  | -                    NationalTravelFeeData = nationalTravelFeeData
 | 
	
		
			
				|  |  | +                    //NationalTravelFeeData = nationalTravelFeeData
 | 
	
		
			
				|  |  |                  }));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              catch (Exception ex)
 | 
	
	
		
			
				|  | @@ -2280,7 +2333,7 @@ namespace OASystem.API.Controllers
 | 
	
		
			
				|  |  |                  return Ok(JsonView(false, ex.Message));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        //
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          /// <summary>
 | 
	
		
			
				|  |  |          /// 团组模块 - 出入境费用 - 子项删除
 | 
	
	
		
			
				|  | @@ -2307,6 +2360,83 @@ namespace OASystem.API.Controllers
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        /// <summary>
 | 
	
		
			
				|  |  | +        /// 团组模块 - 出入境国家费用标准 List
 | 
	
		
			
				|  |  | +        /// </summary>
 | 
	
		
			
				|  |  | +        /// <returns></returns>
 | 
	
		
			
				|  |  | +        [HttpPost]
 | 
	
		
			
				|  |  | +        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
 | 
	
		
			
				|  |  | +        public async Task<IActionResult> GetNationalTravelFeeData(PortDtoBase dto)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            try
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                Stopwatch sw = new Stopwatch();
 | 
	
		
			
				|  |  | +                sw.Start();
 | 
	
		
			
				|  |  | +                string nationalTravelFeeSql = string.Format(@"Select ssd.Name as CurrencyCode, ssd.Remark as CurrencyName,su.CnName as LastUpdateUserName,gntf.* From Grp_NationalTravelFee gntf
 | 
	
		
			
				|  |  | +                                                                Left Join Sys_SetData ssd On ssd.STid = 66 And gntf.Currency = ssd.Id
 | 
	
		
			
				|  |  | +                                                                Left Join Sys_Users su On gntf.LastUpdateUserId = su.Id 
 | 
	
		
			
				|  |  | +                                                                Where gntf.Isdel = 0");
 | 
	
		
			
				|  |  | +                var nationalTravelFeeData = await _sqlSugar.SqlQueryable<NationalTravelFeeInfoView>(nationalTravelFeeSql).ToListAsync();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                var nationalTravel = nationalTravelFeeData.GroupBy(it => it.Country).Select(it1 => it1.FirstOrDefault());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                List<dynamic> nationalTravelFeeData1 = new List<dynamic>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                foreach (var item in nationalTravel)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var cityData = nationalTravelFeeData.Where(it => it.Country == item.Country).ToList();
 | 
	
		
			
				|  |  | +                    var otherData = cityData.Where(it => it.City.Contains("其他城市")).FirstOrDefault();
 | 
	
		
			
				|  |  | +                    if (otherData != null)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        cityData.Remove(otherData);
 | 
	
		
			
				|  |  | +                        cityData.Add(otherData);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    nationalTravelFeeData1.Add(new
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        Country = item.Country,
 | 
	
		
			
				|  |  | +                        CityData = cityData
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                sw.Stop();
 | 
	
		
			
				|  |  | +                return Ok(JsonView(true, "查询成功!耗时:"+ sw.ElapsedMilliseconds+"ms", nationalTravelFeeData1));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            catch (Exception ex)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                return Ok(JsonView(false, ex.Message));
 | 
	
		
			
				|  |  | +                throw;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /// <summary>
 | 
	
		
			
				|  |  | +        /// 团组模块 - 出入境国家费用标准 - Add Or Update
 | 
	
		
			
				|  |  | +        /// </summary>
 | 
	
		
			
				|  |  | +        /// <returns></returns>
 | 
	
		
			
				|  |  | +        [HttpPost]
 | 
	
		
			
				|  |  | +        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
 | 
	
		
			
				|  |  | +        public async Task<IActionResult> PostNationalTravelFeeOperate(NationalTravelFeeOperateDto dto)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            try
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                var data = await _enterExitCostRep.PostNationalTravelFeeOperate(dto);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (data.Code != 0)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    return Ok(JsonView(false, data.Msg));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                return Ok(JsonView(true, "操作成功!", data.Data));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            catch (Exception ex)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                return Ok(JsonView(false, ex.Message));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          #endregion
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |