using Microsoft.AspNetCore.Mvc; using NPOI.SS.Formula.Functions; using OASystem.API.OAMethodLib.ALiYun; using OASystem.API.OAMethodLib.ExcelOutput; using OASystem.Domain.Common; using OASystem.Domain.Dtos.Business; using OASystem.Domain.Dtos.Financial; using OASystem.Domain.Dtos.Groups; using OASystem.Domain.Entities.Business; using OASystem.Domain.Entities.Financial; using OASystem.Domain.Entities.Groups; using OASystem.Domain.Entities.Resource; using OASystem.Domain.ViewModels.Business; using OASystem.Domain.ViewModels.Financial; using OASystem.Domain.ViewModels.Groups; using OASystem.Infrastructure.Repositories.Business; using OASystem.Infrastructure.Repositories.Groups; using OASystem.Infrastructure.Repositories.System; using Org.BouncyCastle.Asn1.Mozilla; namespace OASystem.API.Controllers { /// /// 通用业务操作 /// [Route("api/[controller]/[action]")] public class BusinessController : ControllerBase { private readonly IMapper _mapper; private readonly CommonBusRepository _busRep; private readonly SetDataRepository _setDataRep; private readonly DelegationInfoRepository _groupRep; private readonly TeamRateRepository _teamRateRep; public BusinessController( IMapper mapper, CommonBusRepository busRep, SetDataRepository setDataRep, DelegationInfoRepository groupRep, TeamRateRepository teamRateRep) { _mapper = mapper; _busRep = busRep; _setDataRep = setDataRep; _groupRep = groupRep; _teamRateRep = teamRateRep; } #region 团组信息 /// /// 团组信息 /// 团组简略详情 /// /// 团组info请求dto /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostShareGroupInfo(ShareGroupInfoDto dto) { var groupData = await _groupRep.PostShareGroupInfo(dto); if (groupData.Code != 0) { return Ok(JsonView(false, groupData.Msg)); } return Ok(JsonView(groupData.Data)); } /// /// 团组信息 团组名称 List /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task GetGroupNameList(GroupNameDto dto) { var groupData = await _groupRep.GetGroupNameList(dto); if (groupData.Code != 0) { return Ok(JsonView(false, groupData.Msg)); } return Ok(JsonView(groupData.Data, groupData.Data.Count)); } /// /// 获取团组指向分类 /// /// 参数Json字符串 /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostGroupDirectionalClassificationInit() { Result result = new Result(); result = await _setDataRep.GetSetDataBySTId(_setDataRep, 16); //团组指向分类 if (result.Code != 0) { return Ok(JsonView(false, "获取失败!")); } List _view1 = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(result.Data)); SetDataInfoView xc_view = new SetDataInfoView();//77 行程 //移除行程 xc_view = _view1.Where(it => it.Id == 77).FirstOrDefault(); if (xc_view != null) { _view1.Remove(xc_view); }; List _view = new List(); //_view.Insert(0, new SetDataInfoView { Id = -1, Name = "所有模块" }); SetDataInfoView qz_view = new SetDataInfoView();//80 签证 qz_view = _view1.Where(it => it.Id == 80).FirstOrDefault(); if (qz_view != null) { _view.Insert(0, qz_view); _view1.Remove(qz_view); }; SetDataInfoView jpyd_view = new SetDataInfoView();//85 机票预订 jpyd_view = _view1.Where(it => it.Id == 85).FirstOrDefault(); if (jpyd_view != null) { _view.Insert(1, jpyd_view); _view1.Remove(jpyd_view); }; SetDataInfoView jdyd_view = new SetDataInfoView();//76 酒店预订 jdyd_view = _view1.Where(it => it.Id == 76).FirstOrDefault(); if (jdyd_view != null) { _view.Insert(2, jdyd_view); _view1.Remove(jdyd_view); }; SetDataInfoView jdzc_view = new SetDataInfoView();//751 酒店早餐 jdzc_view = _view1.Where(it => it.Id == 751).FirstOrDefault(); if (jdzc_view != null) { _view.Insert(3, jdzc_view); _view1.Remove(jdzc_view); }; SetDataInfoView cdy_view = new SetDataInfoView();//79 车/导游地接 cdy_view = _view1.Where(it => it.Id == 79).FirstOrDefault(); if (cdy_view != null) { _view.Insert(4, cdy_view); _view1.Remove(cdy_view); }; SetDataInfoView yqgw_view = new SetDataInfoView();//81 邀请/公务活动 yqgw_view = _view1.Where(it => it.Id == 81).FirstOrDefault(); if (yqgw_view != null) { _view.Insert(5, yqgw_view); _view1.Remove(yqgw_view); }; SetDataInfoView bx_view = new SetDataInfoView();//82 团组客户保险 bx_view = _view1.Where(it => it.Id == 82).FirstOrDefault(); if (bx_view != null) { _view.Insert(6, bx_view); _view1.Remove(bx_view); }; SetDataInfoView qtkx_view = new SetDataInfoView();//98 其他款项 qtkx_view = _view1.Where(it => it.Id == 98).FirstOrDefault(); if (qtkx_view != null) { _view.Insert(7, qtkx_view); _view1.Remove(qtkx_view); }; SetDataInfoView skth_view = new SetDataInfoView();//285 收款退还与其他款项 skth_view = _view1.Where(it => it.Id == 285).FirstOrDefault(); if (skth_view != null) { _view.Insert(8, skth_view); _view1.Remove(skth_view); }; if (_view1.Count > 0) { _view.AddRange(_view1); } return Ok(JsonView(_view)); } #endregion #region 币种 List /// /// 币种 List /// /// [HttpGet,HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostCurrencyList() { try { Result setData = await _setDataRep.GetSetDataBySTId(_setDataRep, 66); //币种类型 if (setData.Code == 0) { return Ok(JsonView(true, "查询成功", setData.Data)); } else { return Ok(JsonView(false, setData.Msg)); } } catch (Exception) { return Ok(JsonView(false, "程序错误!")); throw; } } /// /// 团组汇率 币种 Item (来源:团组汇率) /// 根据 团组Id And 业务类型(CTable)Id /// api处理CTable = 285,默认返回CNY /// /// 请求参数Dto /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostGroupTeamRateByDiIdAndCTableId(GeneralTeamRateInfoDto dto) { try { if (dto == null) { return Ok(JsonView(false, "请输入参数!")); } if (dto.DiId == 0) { return Ok(JsonView(false, "请输入正确的团组Id!")); } if (dto.CTable == 0) { return Ok(JsonView(false, "请输入正确的业务类型(CTable)Id!")); } if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3 ) { string teamRateInfoSql = string.Format(@"Select sd.Name,tr.* From Grp_TeamRate tr Left Join Sys_SetData sd On sd.IsDel=0 And sd.STid=16 And tr.CTable = sd.Id Where tr.IsDel = 0 And tr.DiId = {0} And tr.CTable = {1}", dto.DiId,dto.CTable); var teamRateInfo = await _teamRateRep._sqlSugar.SqlQueryable(teamRateInfoSql).ToListAsync(); #region 团组汇率 TeamRateModelGeneralView teamRateModels = new TeamRateModelGeneralView(); #region 单独处理Ctable 币种汇率 默认 为CNY if (dto.CTable == 285) { teamRateModels = new TeamRateModelGeneralView() { Id = 0, CTableId = 285, CTableName = "其他款项与收款退还", TeamRates = new List() { new TeamRateDescAddCurrencyIdView() { CurrencyId = 836, CurrencyCode = "CNY", CurrencyName = "人民币", Rate = 1.0000M, } } }; return Ok(JsonView(true, "操作成功!", teamRateModels)); } #endregion List currencyDatas = new List(); #region 获取所有币种 string sql = string.Format(@"select * from Sys_SetData where STid = {0} and isdel = 0", 66); var DBdata = await _setDataRep.GetListBySqlWithNolockAsync(sql); if (DBdata == null || DBdata.Count == 0) { return Ok(JsonView(false, "所有币种获取失败!")); } currencyDatas = DBdata.Select(x => new SetDataInfoView { Name = x.Name, Id = x.Id, Remark = x.Remark, }).ToList(); #endregion foreach (TeamRateInfoView item in teamRateInfo) { TeamRateModelGeneralView teamRateModelInfo = new TeamRateModelGeneralView(); teamRateModelInfo.Id = item.Id; teamRateModelInfo.CTableId = item.CTable; teamRateModelInfo.CTableName = item.Name; List teamRateDescViews = new List(); #region 拆分remark里的汇率 if (item.Remark.Contains("|")) { string[] currencyArr = item.Remark.Split("|"); foreach (string currency in currencyArr) { string[] currency1 = currency.Split(":"); string[] currency2 = currency1[0].Split("("); string currencyCode = currency2[1].Replace(")", "").TrimEnd(); SetDataInfoView dataInfoView = new SetDataInfoView(); dataInfoView = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault(); int currencyId = currencyDatas.Where(it => it.Name == currencyCode).FirstOrDefault().Id; TeamRateDescAddCurrencyIdView rateDescView = new TeamRateDescAddCurrencyIdView() { CurrencyId = dataInfoView.Id, CurrencyCode = currencyCode, CurrencyName = currency2[0], Rate = decimal.Parse(currency1[1]), }; teamRateDescViews.Add(rateDescView); } } #endregion if (teamRateDescViews.Count > 0) { teamRateDescViews = teamRateDescViews.OrderBy(it => it.CurrencyId).ToList(); } teamRateModelInfo.TeamRates = teamRateDescViews; teamRateModels = teamRateModelInfo; } #endregion return Ok(JsonView(true, "操作成功!", teamRateModels)); } else { return Ok(JsonView(false, "请输入正确的端口号! 1 Web 2 Android 3 Ios;")); } } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); } } /// /// 根据团组Id币种Id及类型Id查询团组汇率 /// /// /// [HttpGet, HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostCurrencyByDiid(int DiId,int CId,int CurrencyId) { try { Result setData = await _setDataRep.PostCurrencyByDiid( DiId, CId, CurrencyId); //币种类型 if (setData.Code == 0) { return Ok(JsonView(true, "查询成功", setData.Data)); } else { return Ok(JsonView(false, setData.Msg)); } } catch (Exception) { return Ok(JsonView(false, "程序错误!")); throw; } } #endregion #region 查询页面关联Ctable /// /// 页面关联Ctable /// 根据PageId 返回 CTable Id /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostPageLinkCTable(PageLinkCTableDto dto) { try { if (dto == null) { return Ok(JsonView(false, "请求参数不能为空!")); } if (dto.PageId == 0) { return Ok(JsonView(false, "页面Id不能为0!")); } List data = AppSettingsHelper.Get("CTableCorrelationPageDatas"); CTableCorrelationPageDatas correlationPageDatas = new CTableCorrelationPageDatas(); foreach (var item in data) { if (item.PageIdDatas != null) { var pageId = item.PageIdDatas.Where(it => it == dto.PageId).FirstOrDefault(); if (pageId != 0) { correlationPageDatas = item; break; } } } if (correlationPageDatas.CTableId == 0) { return Ok(JsonView(false, "您查询的页面Id,未配置AppSettings,请前往配置!")); } return Ok(JsonView(true, "操作成功",new { CTable = correlationPageDatas.CTableId })); } catch (Exception ex) { return Ok(JsonView(false, ex.Message)); } } #endregion #region 会务物料单 /// /// 获取会务活动列表 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostConferenceList() { List listSource = _busRep.Query(s => s.TeamDid == 691 && s.IsDel == 0).ToList(); List viewList = new List(); foreach (var group in listSource) { GroupNameView _view = new GroupNameView(); _view.Id = group.Id; _view.GroupName = group.TeamName; } return Ok(JsonView(viewList)); } /// /// 获取会务的采购物品计划清单 /// /// 会务活动Id /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostConfItemList(int ConfId) { Bus_ConfItemListView view = new Bus_ConfItemListView(); Bus_ConfItemListInfo _confListInfo = await _busRep.Query(s => s.Diid == ConfId).FirstAsync(); if (_confListInfo != null) { view.TotalCost = _confListInfo.TotalCost; string sqlItem = string.Format(@" Select c.Id,c.ItemId,d.ItemName,c.[Count],c.CurrCost,c.OpRemark From Bus_ConfItem as c With(Nolock) Inner Join Res_ItemDetail as d with(Nolock) On c.ItemId=d.Id Where c.ConfListId = {0}", ConfId); List confItemList = await _busRep._sqlSugar.SqlQueryable(sqlItem).ToListAsync(); view.ItemList = new List(confItemList); } else { view.ItemList = new List(); view.TotalCost = 0; } return Ok(JsonView(view)); } /// /// 获取会务可采购的物料集合 /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostOptionalItemList() { List result = await _busRep.GetViewList_OptionalItem(); return Ok(JsonView(result)); } /// /// 编辑物料采购清单 /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task PostEditOptionalItemList(JsonDtoBase jsonDto) { if (string.IsNullOrEmpty(jsonDto.Paras)) { return Ok(JsonView(false, "参数为空")); } Edit_OptionalItemListDto _dto = JsonConvert.DeserializeObject(jsonDto.Paras); //Edit_OptionalItemListDto _dto = System.Text.Json.JsonSerializer.Deserialize(jsonDto.Paras); if (_dto.DiId < 1) { return Ok(JsonView(false, "团组Id为空")); } if (_dto.ConfItemListId < 1) { //新增 int rstInsert = await _busRep.Insert_ConfItemList(_dto); return Ok(JsonView(rstInsert == 0)); } else { //修改 int rstUpdate = await _busRep.Edit_ConfItemList(_dto); return Ok(JsonView(rstUpdate == 0)); } return Ok(JsonView(false)); } /// /// 获取会务采购物料清单Excel /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task Excel_ConfItemList(JsonDtoBase jsonDto) { if (string.IsNullOrEmpty(jsonDto.Paras)) { return Ok(JsonView(false, "参数为空")); } dynamic confList = JsonConvert.DeserializeObject(jsonDto.Paras); int confListId = confList.ConfListId; Bus_ConfItemListInfo _entityConfList = await _busRep.Query(s => s.Id == confListId).FirstAsync(); if (_entityConfList != null) { string result = new Excel_BusConfItemList().Excel(_entityConfList); } else { return Ok(JsonView(false, "请先保存数据")); } return Ok(JsonView(false)); } #endregion #region 阿里云短信测试 /// /// 编辑物料采购清单 /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task AliMessageTest(string mobile) { string add2dayZH = DateTime.Now.AddDays(2).ToString("yyyy年MM月dd日"); string templateParam = JsonConvert.SerializeObject(new { teams = "测试团组", date = add2dayZH }); AliMessagePost.PostMessage(mobile, "泛美国际团组", "SMS_461575447", templateParam); return Ok(JsonView(true)); } #endregion } }