using AutoMapper;
using OASystem.Domain;
using OASystem.Domain.Dtos.Groups;
using OASystem.Domain.Entities.Groups;
using OASystem.Domain.ViewModels.Groups;
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;
namespace OASystem.Infrastructure.Repositories.Groups
{
///
/// 出入境费用 仓库
///
public class EnterExitCostRepository : BaseRepository
{
private readonly IMapper _mapper;
private readonly SetDataRepository _setDataRep;
public EnterExitCostRepository(SqlSugarClient sqlSugar, IMapper mapper, SetDataRepository setDataRep)
: base(sqlSugar)
{
_setDataRep = setDataRep;
_mapper = mapper;
}
///
/// 更新出入境费用汇率信息
///
///
public async Task SetEnterExitCostCurrencyChange()
{
Result result = new Result { Code = -1, Msg = "未知错误" };
var enterExitList = await _sqlSugar.Queryable().ToListAsync();
foreach (var item in enterExitList)
{
string rateStr = string.Format(@"美元(USD):{0}|日元(JPY):{1}|欧元(EUR):{2}|英镑(GBP):{3}|港币(HKD):{4}", item.RateUSD, item.RateJPY, item.RateEUR, item.RateGBP, item.RateHKD);
item.CurrencyRemark = rateStr;
}
var res = await _sqlSugar.Updateable(enterExitList)
.WhereColumns(it => new { it.Id })
.UpdateColumns(it => new { it.CurrencyRemark })
.ExecuteCommandAsync();
if (res > 0)
{
result.Code = 0;
result.Msg = res.ToString();
return result;
}
return result;
}
///
/// 查询 根据 Diid 查询
///
///
public async Task GetEnterExitCostInfoByDiId(EnterExitCostInfobyDiIdDto dto)
{
Result result = new Result();
var enterExitCostData = await _sqlSugar.Queryable().FirstAsync(it => it.DiId == dto.DiId && it.IsDel == 0);
//Sys_PageFunctionPermission Function = _mapper.Map(dto);
EnterExitCostInfoView enterExitCostInfoView = new EnterExitCostInfoView();
if (dto.PortType == 1) // Web
{
if (enterExitCostData != null)
{
enterExitCostInfoView = _mapper.Map(enterExitCostData);
var dayAndCostSql = string.Format(@"Select ntf.Country,ntf.City,ssd.Name CurremcyCode,ssd.Remark CurrencyName,gdac.* From Grp_DayAndCost 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.DiId = {0} Order By [Type] ASC,[Days] ASC", dto.DiId);
var dayAndCostData = await _sqlSugar.SqlQueryable(dayAndCostSql).ToListAsync();
enterExitCostInfoView.QuarterageData = dayAndCostData.Where(it => it.Type == 1).ToList(); //住宿费 1
enterExitCostInfoView.BoardWagesData = dayAndCostData.Where(it => it.Type == 2).ToList(); //伙食费 2
enterExitCostInfoView.MiscellaneousFeeData = dayAndCostData.Where(it => it.Type == 3).ToList(); //公杂费 3
enterExitCostInfoView.TrainingExpenseData = dayAndCostData.Where(it => it.Type == 4).ToList(); //培训费 4
enterExitCostInfoView.Currencys = (List?)CommonFun.GetCurrencyChinaToList(enterExitCostData.CurrencyRemark);
result.Msg = "查询成功";
result.Code = 0;
}
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 = ErrorMsg.Error_Port_Msg;
return result;
}
///
/// Add Or Update
///
///
///
public async Task PostEnterExitCostOperate(EnterExitCostOperateDto dto)
{
Result result = new Result() { Code = -1, Msg = "操作失败!" };
#region MyRegion
//var enterExitCost = _mapper.Map(dto);
////enterExitCost.InsidePay = enterExitCost.Visa + enterExitCost.YiMiao + enterExitCost.HeSuan + enterExitCost.Service + enterExitCost.Safe + enterExitCost.Ticket;
//var quarterageData = _mapper.Map>(dto.QuarterageData); //住宿费 1
//quarterageData = quarterageData.Select(it => { it.CreateUserId = dto.UserId; return it; }).ToList();
//var boardWagesData = _mapper.Map>(dto.BoardWagesData); //伙食费 2
//boardWagesData = boardWagesData.Select(it => { it.CreateUserId = dto.UserId; return it; }).ToList();
//var miscellaneousFeeData = _mapper.Map>(dto.MiscellaneousFeeData); //公杂费 3
//miscellaneousFeeData = miscellaneousFeeData.Select(it => { it.CreateUserId = dto.UserId; return it; }).ToList();
//var trainingExpenseData = _mapper.Map>(dto.TrainingExpenseData); //培训费 4
//trainingExpenseData = trainingExpenseData.Select(it => { it.CreateUserId = dto.UserId; return it; }).ToList();
////处理币种string
//enterExitCost.CurrencyRemark = CommonFun.GetCurrencyChinaToString(dto.Currencys);
//enterExitCost.CreateUserId = dto.UserId;
//_sqlSugar.BeginTran();
//if (dto.PortType == 1)
//{
// try
// {
// var enterExit = _sqlSugar.Storageable(enterExitCost).ToStorage();
// var enterExitadd = enterExit.AsInsertable.ExecuteCommand(); //不存在插入
// var enterExitedit = enterExit.AsUpdateable.IgnoreColumns(it => new { it.DiId, it.CreateUserId, it.CreateTime, it.IsDel }).ExecuteCommand(); //存在更新
// var quarterage = _sqlSugar.Storageable(quarterageData).ToStorage(); //住宿费 1
// var quarterageadd = quarterage.AsInsertable.ExecuteCommand(); //不存在插入
// var quarterageedit = quarterage.AsUpdateable.IgnoreColumns(it => new { it.DiId, it.Type, it.CreateUserId, it.CreateTime, it.IsDel }).ExecuteCommand(); //存在更新
// var boardWages = _sqlSugar.Storageable(boardWagesData).ToStorage(); //伙食费 2
// var boardWagesadd = boardWages.AsInsertable.ExecuteCommand(); //不存在插入
// var boardWagesedit = boardWages.AsUpdateable.IgnoreColumns(it => new { it.DiId, it.Type, it.CreateUserId, it.CreateTime, it.IsDel }).ExecuteCommand(); //存在更新
// var miscellaneousFee = _sqlSugar.Storageable(miscellaneousFeeData).ToStorage(); //公杂费 3
// var miscellaneousFeeedd = miscellaneousFee.AsInsertable.ExecuteCommand(); //不存在插入
// var miscellaneousFeeedit = miscellaneousFee.AsUpdateable.IgnoreColumns(it => new { it.DiId, it.Type, it.CreateUserId, it.CreateTime, it.IsDel }).ExecuteCommand(); //存在更新
// var trainingExpense = _sqlSugar.Storageable(trainingExpenseData).ToStorage(); //培训费 4
// var trainingExpenseadd = trainingExpense.AsInsertable.ExecuteCommand(); //不存在插入
// var trainingExpenseedit = trainingExpense.AsUpdateable.IgnoreColumns(it => new { it.DiId, it.Type, it.CreateUserId, it.CreateTime, it.IsDel }).ExecuteCommand(); //存在更新
// _sqlSugar.CommitTran();
// result.Code = 0;
// result.Msg = "操作成功!";
// }
// catch (Exception ex)
// {
// _sqlSugar.RollbackTran();
// result.Msg = ex.Message;
// }
//}
//else result.Msg = ErrorMsg.Error_Port_Msg;
#endregion
if (dto.SumJJC == 0) {
dto.OutsideJJPay = 0;
}
if (dto.SumGWC == 0) {
dto.OutsaideGWPay = 0;
}
var enterExitCost = _mapper.Map(dto);
//enterExitCost.InsidePay = enterExitCost.Visa + enterExitCost.YiMiao + enterExitCost.HeSuan + enterExitCost.Service + enterExitCost.Safe + enterExitCost.Ticket;
List subData = new List();
var quarterageData = _mapper.Map>(dto.QuarterageData); //住宿费 1
quarterageData = quarterageData.Select(it => { it.CreateUserId = dto.UserId; return it; }).ToList();
if (quarterageData.Count > 0) subData.AddRange(quarterageData);
var boardWagesData = _mapper.Map>(dto.BoardWagesData); //伙食费 2
boardWagesData = boardWagesData.Select(it => { it.CreateUserId = dto.UserId; return it; }).ToList();
if (boardWagesData.Count > 0) subData.AddRange(boardWagesData);
var miscellaneousFeeData = _mapper.Map>(dto.MiscellaneousFeeData); //公杂费 3
miscellaneousFeeData = miscellaneousFeeData.Select(it => { it.CreateUserId = dto.UserId; return it; }).ToList();
if (miscellaneousFeeData.Count > 0) subData.AddRange(miscellaneousFeeData);
var trainingExpenseData = _mapper.Map>(dto.TrainingExpenseData); //培训费 4
trainingExpenseData = trainingExpenseData.Select(it => { it.CreateUserId = dto.UserId; return it; }).ToList();
if (trainingExpenseData.Count > 0) subData.AddRange(trainingExpenseData);
//处理币种string
enterExitCost.CurrencyRemark = CommonFun.GetCurrencyChinaToString(dto.Currencys);
enterExitCost.CreateUserId = dto.UserId;
_sqlSugar.BeginTran();
if (dto.PortType == 1)
{
try
{
int enterExitId = 0;
if (enterExitCost.Id > 0) //修改
{
var updateId = _sqlSugar.Updateable(enterExitCost)
.IgnoreColumns(it => new { it.DeleteUserId, it.DeleteTime, it.CreateUserId, it.CreateTime, it.IsDel })
.ExecuteCommand();
if (updateId > 0)
{
enterExitId = enterExitCost.Id;
}
else
{
_sqlSugar.RollbackTran();
result.Msg = "修改操作失败!";
return result;
}
}
else
{ //添加
enterExitId = _sqlSugar.Insertable(enterExitCost).ExecuteReturnIdentity();
if (enterExitId < 1)
{
result.Msg = "添加操作失败!";
return result;
}
}
if (enterExitId > 0)
{
string sqlDelete = string.Format(@" Delete From Grp_DayAndCost Where Diid = {0} ", dto.DiId);
await ExecuteCommandAsync(sqlDelete);
foreach (var item in subData)
{
var updateId = _sqlSugar.Insertable(item).ExecuteCommand();
if (updateId < 1)
{
_sqlSugar.RollbackTran();
result.Msg = "添加操作失败!";
return result;
}
}
//foreach (var item in subData)
//{
// if (item.Id > 0) //修改
// {
// var updateId = _sqlSugar.Updateable(item)
// .IgnoreColumns(it => new { it.DiId, it.Type, it.CreateUserId, it.CreateTime, it.IsDel })
// .ExecuteCommand();
// if (updateId < 1)
// {
// _sqlSugar.RollbackTran();
// result.Msg = "修改操作失败!";
// return result;
// }
// }
// else
// { //添加
// var updateId = _sqlSugar.Insertable(item).ExecuteCommand();
// if (updateId < 1)
// {
// _sqlSugar.RollbackTran();
// result.Msg = "添加操作失败!";
// return result;
// }
// }
//}
}
_sqlSugar.CommitTran();
result.Code = 0;
result.Msg = "操作成功!";
}
catch (Exception ex)
{
_sqlSugar.RollbackTran();
result.Msg = ex.Message;
}
}
else result.Msg = ErrorMsg.Error_Port_Msg;
return result;
}
///
/// 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 = ErrorMsg.Error_Port_Msg;
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
};
CommitTran();
RollbackTran();
result.Msg = "操作失败";
return result;
}
}
}