using OASystem.Domain.Dtos.Groups; using OASystem.Domain.Entities.Groups; using OASystem.Domain.ViewModels.Groups; using OASystem.Domain; using OASystem.Infrastructure.Repositories.System; using OASystem.Infrastructure.Tools; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using AutoMapper; namespace OASystem.Infrastructure.Repositories.Groups { /// /// 出入境费用-草稿 仓库 /// public class EnterExitCostDraftRepository : BaseRepository { private readonly IMapper _mapper; private readonly SetDataRepository _setDataRep; public EnterExitCostDraftRepository(SqlSugarClient sqlSugar, IMapper mapper, SetDataRepository setDataRep) : base(sqlSugar) { _setDataRep = setDataRep; _mapper = mapper; } /// /// 查询 根据 Id 查询 /// /// public async Task EnterExitCostDraftInfoById(EnterExitCostDraftInfobyDiIdDto dto) { var result = new JsonView() { Code = 400, Msg = "暂无数据" }; var id = dto.Id; var enterExitCostDraftData = await _sqlSugar.Queryable().OrderByDescending(x => x.CreateTime).FirstAsync(it => it.Id == id && it.IsDel == 0); var enterExitCostInfoView = new EnterExitCostDraftInfoView(); if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3) { if (enterExitCostDraftData != null) { enterExitCostInfoView = _mapper.Map(enterExitCostDraftData); var dayAndCostDraftSql = string.Format(@"Select ntf.Country,ntf.City,ssd.Name CurremcyCode,ssd.Remark CurrencyName,gdac.* From Grp_DayAndCostDraft gdac Left Join Grp_NationalTravelFee ntf On ntf.Id = gdac.NationalTravelFeeId Left Join Sys_SetData ssd On ssd.STid = 66 And gdac.Currency = ssd.Id Where gdac.Isdel = 0 And ntf.IsDel = 0 And gdac.ParentId = {0} Order By [Type] ASC,[Days] ASC", id); var dayAndCostDraftData = await _sqlSugar.SqlQueryable(dayAndCostDraftSql).ToListAsync(); enterExitCostInfoView.QuarterageData = dayAndCostDraftData.Where(it => it.Type == 1).ToList(); //住宿费 1 enterExitCostInfoView.BoardWagesData = dayAndCostDraftData.Where(it => it.Type == 2).ToList(); //伙食费 2 enterExitCostInfoView.MiscellaneousFeeData = dayAndCostDraftData.Where(it => it.Type == 3).ToList(); //公杂费 3 enterExitCostInfoView.TrainingExpenseData = dayAndCostDraftData.Where(it => it.Type == 4).ToList(); //培训费 4 enterExitCostInfoView.DayOtherPriceData = _sqlSugar.Queryable() .Where(x => x.IsDel == 0 && x.ParentId == id) .OrderBy(x => x.Index) .Select(x => new DayOtherPriceDraftView { ParentId = x.ParentId, Id = x.Id, Cost = x.Cost, Currency = x.Currency, Index = x.Index, SetDataId = x.SetDataId, SubTotal = x.SubTotal, Remark = x.Remark, }) .ToList(); enterExitCostInfoView.Currencys = (List?)CommonFun.GetCurrencyChinaToList(enterExitCostDraftData.CurrencyRemark); result.Msg = "操作成功"; result.Code = 200; } else { // List views = new List() // { // new DayAndCostInfoView {Days=1}, // new DayAndCostInfoView {Days=2}, // new DayAndCostInfoView {Days=3}, // new DayAndCostInfoView {Days=4}, // new DayAndCostInfoView {Days=5}, // new DayAndCostInfoView {Days=6}, // new DayAndCostInfoView {Days=7}, // new DayAndCostInfoView {Days=8}, // }; // enterExitCostInfoView.QuarterageData = views; // enterExitCostInfoView.BoardWagesData = views; // enterExitCostInfoView.MiscellaneousFeeData = views; // enterExitCostInfoView.TrainingExpenseData = views; // result.Code = 0; result.Msg = "未查询出数据!!!"; } result.Data = enterExitCostInfoView; } else result.Msg = MsgTips.Port; return result; } /// /// Add Or Update /// /// /// public async Task EnterExitCostDraftOp(EnterExitCostDraftOpDto dto) { Result result = new Result() { Code = -1, Msg = "操作失败!" }; if (dto.SumJJC == 0) dto.OutsideJJPay = 0; if (dto.SumGWC == 0) dto.OutsideGWPay = 0; if (dto.SumTDC == 0) dto.OutsideTDPay = 0; var enterExitCost = _mapper.Map(dto); enterExitCost.Remark = dto.FirstItemRemark; //enterExitCost.InsidePay = enterExitCost.Visa + enterExitCost.YiMiao + enterExitCost.HeSuan + enterExitCost.Service + enterExitCost.Safe + enterExitCost.Ticket; var subData = new List(); var quarterageData = _mapper.Map>(dto.QuarterageData); //住宿费 1 quarterageData = quarterageData.Select(it => { it.CreateUserId = dto.UserId; return it; }).ToList(); if (quarterageData.Any()) subData.AddRange(quarterageData); var boardWagesData = _mapper.Map>(dto.BoardWagesData); //伙食费 2 boardWagesData = boardWagesData.Select(it => { it.CreateUserId = dto.UserId; return it; }).ToList(); if (boardWagesData.Any()) subData.AddRange(boardWagesData); var miscellaneousFeeData = _mapper.Map>(dto.MiscellaneousFeeData); //公杂费 3 miscellaneousFeeData = miscellaneousFeeData.Select(it => { it.CreateUserId = dto.UserId; return it; }).ToList(); if (miscellaneousFeeData.Any()) subData.AddRange(miscellaneousFeeData); var trainingExpenseData = _mapper.Map>(dto.TrainingExpenseData); //培训费 4 trainingExpenseData = trainingExpenseData.Select(it => { it.CreateUserId = dto.UserId; return it; }).ToList(); if (trainingExpenseData.Any()) subData.AddRange(trainingExpenseData); //处理币种string enterExitCost.CurrencyRemark = CommonFun.GetCurrencyChinaToString(dto.Currencys); enterExitCost.CreateUserId = dto.UserId; _sqlSugar.BeginTran(); if (dto.PortType == 1) { try { int enterExitId = 0; var isNull = _sqlSugar.Queryable().Where(it => it.IsDel == 0 && it.DraftName.Equals(dto.DraftName)).First(); if (isNull != null) //修改 { var updateId = _sqlSugar.Updateable(enterExitCost) .IgnoreColumns(it => new { it.DeleteUserId, it.DeleteTime, it.CreateUserId, it.CreateTime, it.IsDel }) .WhereColumns(it => it.DraftName) .ExecuteCommand(); if (updateId > 0) { enterExitId = isNull.Id; } else { _sqlSugar.RollbackTran(); result.Msg = "修改操作失败!"; return result; } } else //添加 { //添加 enterExitId = _sqlSugar.Insertable(enterExitCost).ExecuteReturnIdentity(); if (enterExitId < 1) { _sqlSugar.RollbackTran(); result.Msg = "添加操作失败!"; return result; } } if (enterExitId > 0) { var addList = subData.Where(x => x.Id == 0).ToList(); var updateList = subData.Where(x => x.Id > 0).ToList(); if (addList.Any()) { var rowCount = _sqlSugar.Insertable(addList).ExecuteCommand(); } if (updateList.Any()) { var rowCount = _sqlSugar.Insertable(updateList).ExecuteCommand(); } if (dto.DayOtherPriceData.Any()) { var inserList = dto.DayOtherPriceData .Where(x => x.Id == 0) .Select(x => new Grp_DayOtherPriceDraft { Cost = x.Cost, Id = x.Id, CreateTime = DateTime.Now, CreateUserId = dto.UserId, Currency = x.Currency, ParentId = enterExitId, Index = x.Index, IsDel = 0, SetDataId = x.SetDataId, SubTotal = x.SubTotal, Remark = x.Remark, }) .ToList(); var updateList1 = dto.DayOtherPriceData .Where(x => x.Id != 0) .Select(x => new Grp_DayOtherPriceDraft { Cost = x.Cost, Id = x.Id, CreateTime = DateTime.Now, CreateUserId = dto.UserId, Currency = x.Currency, ParentId = enterExitId, Index = x.Index, IsDel = 0, SetDataId = x.SetDataId, SubTotal = x.SubTotal, Remark = x.Remark }) .ToList(); if (inserList.Any()) { var rowCount = _sqlSugar.Insertable(inserList).ExecuteCommand(); } if (updateList1.Any()) { var rowCount = _sqlSugar.Updateable(updateList1).ExecuteCommand(); } } } _sqlSugar.CommitTran(); result.Code = 0; result.Msg = "操作成功!"; result.Data = new { sign = enterExitId }; } catch (Exception ex) { _sqlSugar.RollbackTran(); result.Msg = ex.Message; } } else result.Msg = MsgTips.Port; return result; } /// /// 确认费用 /// /// /// public async Task ConfirmCost(ConfirmCostDto dto) { var _view = new JsonView() { Code = 20001, Msg = "操作失败!" }; if (dto.Id < 1) { _view.Msg = MsgTips.Id; return _view; } int confirm = 1; if (dto.Type == 1) confirm = 2; // 确认 else if (dto.Type == 2) { confirm = 1; } // 撤回 else { _view.Msg = "请传入正确的type;1:确认 2:撤回"; return _view; } var update = await _sqlSugar.Updateable() .SetColumns(x => new Grp_EnterExitCost() { IsConfirm = confirm }) .Where(x => x.Id == dto.Id) .ExecuteCommandAsync(); if (update > 0) { _view.Code = 200; _view.Msg = "操作成功!"; return _view; } return _view; } /// /// Del /// /// /// public async Task PostEnterExitCostSubItemDel(EnterExitCostSubItemDelDto dto) { Result result = new Result(); var data = new Grp_DayAndCost() { Id = dto.Id, IsDel = 1, DeleteUserId = dto.DeleteUserId, DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") }; var del = _sqlSugar.Updateable(data).UpdateColumns(it => new { it.IsDel, it.DeleteUserId, it.DeleteTime }).ExecuteCommand(); if (del > 0) result.Code = 0; else result.Msg = string.Format("删除失败!"); return result; } /// /// 团组模块 - 出入境国家费用标准 - Add Or Update /// /// /// public async Task PostNationalTravelFeeOperate(NationalTravelFeeOperateDto dto) { Result result = new Result(); Grp_NationalTravelFee nationalTravelFee = _mapper.Map(dto); nationalTravelFee.LastUpdateUserId = dto.UserId; nationalTravelFee.CreateUserId = dto.UserId; if (dto.PortType == 1) //web { var _nationalTravelFee = _sqlSugar.Storageable(nationalTravelFee).ToStorage(); if (dto.Id == 0) //新增 { string selectSql = string.Format(@"Select * From Grp_NationalTravelFee Where IsDel = 0 And Continent = '{0}' And Country = '{1}' And City = '{2}'", dto.Continent, dto.Country, dto.City); Grp_NationalTravelFee nationalTravelFee1 = new Grp_NationalTravelFee(); nationalTravelFee1 = await _sqlSugar.SqlQueryable(selectSql).FirstAsync(); if (nationalTravelFee1 != null) { result.Msg = "该国家 城市已存在,请勿重复添加!"; return result; } _nationalTravelFee.AsInsertable.ExecuteCommand(); //不存在插入 } else { _nationalTravelFee.AsUpdateable .IgnoreColumns(it => new { it.CreateUserId, it.CreateTime, it.IsDel }) .WhereColumns(it => it.Id) .ExecuteCommand(); //存在更新 } result.Code = 0; } else if (dto.PortType == 2) //Android { } else if (dto.PortType == 3) //Ios { } else result.Msg = MsgTips.Port; return result; } /// /// 一键清空 /// 删除主表数据 Update /// 删除子表数据 delete /// /// /// /// public async Task _OneClickClear(int id, int diId, int userId) { Result result = new Result() { Code = -1, Msg = "操作成功!" }; if (id < 1) return result = new Result() { Code = -1, Msg = "请传入有效的Id参数!" }; if (diId < 1) return result = new Result() { Code = -1, Msg = "请传入有效的Id参数!" }; if (userId < 1) return result = new Result() { Code = -1, Msg = "请传入有效的UserId参数!" }; BeginTran(); Grp_EnterExitCost _EnterExitCost = new Grp_EnterExitCost() { Id = id, IsDel = 1, DeleteUserId = userId, DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }; //int update = await _sqlSugar.Updateable(_EnterExitCost).Where(it => it.Id == id).ExecuteCommandAsync(); int update = await _sqlSugar.Updateable(_EnterExitCost) .UpdateColumns(it => new { it.IsDel, it.DeleteUserId, it.DeleteTime }) .Where(it => it.Id == id).ExecuteCommandAsync(); if (update > 0) { string sqlDelete = string.Format(@"Delete From Grp_DayAndCost Where Diid = {0} ", diId); await ExecuteCommandAsync(sqlDelete); result.Code = 0; result.Msg = "操作成功!"; CommitTran(); } else { result.Msg = "操作失败"; RollbackTran(); } return result; } } }