|
@@ -0,0 +1,321 @@
|
|
|
+using AutoMapper;
|
|
|
+using MySqlX.XDevAPI.Common;
|
|
|
+using OASystem.Domain;
|
|
|
+using OASystem.Domain.Dtos.Groups;
|
|
|
+using OASystem.Domain.Entities.Groups;
|
|
|
+using OASystem.Domain.Entities.Resource;
|
|
|
+using OASystem.Domain.ViewModels.Groups;
|
|
|
+using SqlSugar;
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Linq;
|
|
|
+using System.Text;
|
|
|
+using System.Threading.Tasks;
|
|
|
+using Result = OASystem.Domain.Result;
|
|
|
+
|
|
|
+namespace OASystem.Infrastructure.Repositories.Groups
|
|
|
+{
|
|
|
+ /// <summary>
|
|
|
+ /// 倒推表 仓储
|
|
|
+ /// </summary>
|
|
|
+ public class InvertedListRepository:BaseRepository<Grp_InvertedList,InvertedListView>
|
|
|
+ {
|
|
|
+ private readonly IMapper _mapper;
|
|
|
+ private readonly Result _result;
|
|
|
+ private readonly DelegationInfoRepository _delegationInfoRep;
|
|
|
+ public InvertedListRepository(SqlSugarClient sqlSugar, IMapper mapper, DelegationInfoRepository delegationInfoRep)
|
|
|
+ : base(sqlSugar)
|
|
|
+ {
|
|
|
+ _mapper = mapper;
|
|
|
+ _result = new Result() { Code = -1, Msg = "系统错误!", Data = new List<object>() { } };
|
|
|
+ _delegationInfoRep = delegationInfoRep;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 基础数据
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<Result> _Init()
|
|
|
+ {
|
|
|
+ dynamic groupData = null;
|
|
|
+ var groupData1 = await _delegationInfoRep.PostShareGroupInfos(1);
|
|
|
+ if (groupData1.Code == 0)
|
|
|
+ {
|
|
|
+ groupData = groupData1.Data;
|
|
|
+ }
|
|
|
+
|
|
|
+ var setData = await _sqlSugar.Queryable<Sys_SetData>().Where(it => it.IsDel == 0).ToListAsync();
|
|
|
+
|
|
|
+ var officialTypeData = setData.Where(it => it.STid == 81).Select(it => new { it.Id,it.Name }).ToList();
|
|
|
+
|
|
|
+ var visaTypeData = setData.Where(it => it.STid == 82).Select(it => new { it.Id, it.Name }).ToList();
|
|
|
+
|
|
|
+ _result.Code = 0;
|
|
|
+ _result.Msg = "操作成功!";
|
|
|
+ _result.Data = new {
|
|
|
+ groupData = groupData1,
|
|
|
+ officialTypeData = officialTypeData,
|
|
|
+ visaTypeData = visaTypeData
|
|
|
+ };
|
|
|
+
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Info
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<Result> _Info(int portTypeId,int diId)
|
|
|
+ {
|
|
|
+ #region 参数验证
|
|
|
+ if (portTypeId < 1)
|
|
|
+ {
|
|
|
+ _result.Msg = "请输入有效的PortType参数值";
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+ if (diId < 1)
|
|
|
+ {
|
|
|
+ _result.Msg = "请输入有效的DiId参数值";
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+ string sql = string.Format(@$"Select * From Grp_InvertedList Where Isdel={0} And DiId = {diId}");
|
|
|
+ var info = await _sqlSugar.SqlQueryable<InvertedListInfoView>(sql).FirstAsync();
|
|
|
+
|
|
|
+ if (info == null) {
|
|
|
+ info = new InvertedListInfoView();
|
|
|
+
|
|
|
+ var groupInfo = await _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0 && it.Id == diId).FirstAsync();
|
|
|
+ if (groupInfo == null)
|
|
|
+ {
|
|
|
+ _result.Msg = @$"团组数据不存在!";
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<string> visitCountry = new List<string>();
|
|
|
+
|
|
|
+ string grpVisitCountry = groupInfo.VisitCountry;
|
|
|
+
|
|
|
+ if (!string.IsNullOrEmpty(grpVisitCountry))
|
|
|
+ {
|
|
|
+ grpVisitCountry = _delegationInfoRep.FormartTeamName(grpVisitCountry);
|
|
|
+
|
|
|
+ visitCountry = grpVisitCountry.Split("、").ToList();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //签证费用标准
|
|
|
+ var visaFeeDatas = await _sqlSugar.Queryable<Res_CountryFeeCost>().Where(it => it.IsDel == 0).ToListAsync();
|
|
|
+ List<VisaCountryInfo> visaCountryInfos = new List<VisaCountryInfo>();
|
|
|
+
|
|
|
+ foreach (var itemn in visitCountry)
|
|
|
+ {
|
|
|
+ visaCountryInfos.Add(new VisaCountryInfo() {
|
|
|
+
|
|
|
+ Country = itemn,
|
|
|
+ OfficialTypeId=-1,
|
|
|
+ VisaTypeId = -1,
|
|
|
+ VisaDay = Convert.ToInt32(visaFeeDatas.Find(it => it.VisaCountry.Equals(itemn.Trim()))?.VisaTime ?? "0"),
|
|
|
+ });
|
|
|
+ }
|
|
|
+ info.VisaCountryData = visaCountryInfos;
|
|
|
+ _result.Data = info;
|
|
|
+ _result.Msg = "未查询到数据!";
|
|
|
+ _result.Code = 0;
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+
|
|
|
+ info.IsQuery = true;
|
|
|
+ int ilId = info.Id;
|
|
|
+
|
|
|
+ string visaSql = string.Format(@$"Select * From Grp_InvertedListVisaCountry Where Isdel={0} And ILId = {ilId}");
|
|
|
+ var visaCountryInfo = await _sqlSugar.SqlQueryable<VisaCountryInfo>(sql).ToListAsync();
|
|
|
+
|
|
|
+ info.VisaCountryData = visaCountryInfo;
|
|
|
+ _result.Data = info;
|
|
|
+ _result.Code = 0;
|
|
|
+
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Create
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="diId"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<Result> _Create(int userId,int diId)
|
|
|
+ {
|
|
|
+ #region 参数验证
|
|
|
+ if (diId < 1)
|
|
|
+ {
|
|
|
+ _result.Msg = $@"请输入有效的DiId参数值!";
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+ if (userId < 1)
|
|
|
+ {
|
|
|
+ _result.Msg = $@"请输入有效的UserId参数值!";
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ var selectInfo = await _sqlSugar.Queryable<Grp_InvertedList>().Where(it => it.IsDel == 0 && it.DiId == diId).FirstAsync();
|
|
|
+ if (selectInfo != null)
|
|
|
+ {
|
|
|
+ _result.Msg = @$"该数据已存在,不可重复创建!";
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+
|
|
|
+ var groupInfo = await _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0 && it.Id == diId).FirstAsync();
|
|
|
+ if (groupInfo != null)
|
|
|
+ {
|
|
|
+ _result.Msg = @$"团组数据不存在,不可创建!";
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (string.IsNullOrEmpty( groupInfo.VisitDate.ToString()))
|
|
|
+ {
|
|
|
+ _result.Msg = @$"团组出访时间未填写,不可创建!";
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+
|
|
|
+ DateTime visitDt = groupInfo.VisitDate;
|
|
|
+
|
|
|
+ List<string> visitCountry = new List<string>();
|
|
|
+
|
|
|
+ string grpVisitCountry = groupInfo.VisitCountry;
|
|
|
+
|
|
|
+ if (!string.IsNullOrEmpty(grpVisitCountry))
|
|
|
+ {
|
|
|
+ grpVisitCountry = _delegationInfoRep.FormartTeamName(grpVisitCountry);
|
|
|
+
|
|
|
+ visitCountry = grpVisitCountry.Split("、").ToList();
|
|
|
+ }
|
|
|
+
|
|
|
+ //签证费用标准
|
|
|
+ var visaFeeDatas = await _sqlSugar.Queryable<Res_CountryFeeCost>().Where(it => it.IsDel == 0).ToListAsync();
|
|
|
+
|
|
|
+
|
|
|
+ /*
|
|
|
+ * 默认步骤所需提前天数
|
|
|
+ * A 自然日 B 工作日
|
|
|
+ */
|
|
|
+ int approvalData_advanceDays = 60, //报批资料准备
|
|
|
+ approval_advanceDays = 45, //报批
|
|
|
+ IssueApproval_advanceDays = 33, //出批件
|
|
|
+ ApplyPassport_advanceDays = 30, //办护照
|
|
|
+ VisaInformation_advanceDays = 16, //签证资料准备
|
|
|
+ sendVisa_advanceDays = 12, //送签
|
|
|
+ issueVisa_advanceDays = 5, //出签
|
|
|
+ preTripMeeting_advanceDays = 3, //行前会
|
|
|
+ airportdDropOff_advanceDays = 0; //送机
|
|
|
+
|
|
|
+ var info = new Grp_InvertedList() {
|
|
|
+ DiId = diId,
|
|
|
+ ApprovalDataDt = visitDt.AddDays(approvalData_advanceDays).ToString("yyyy-MM-dd"),
|
|
|
+ ApprovalDt = visitDt.AddDays(approval_advanceDays).ToString("yyyy-MM-dd"),
|
|
|
+ ApprovalType = -1,
|
|
|
+ IssueApprovalDt = visitDt.AddDays(IssueApproval_advanceDays).ToString("yyyy-MM-dd"),
|
|
|
+ ApplyPassportDt = visitDt.AddDays(ApplyPassport_advanceDays).ToString("yyyy-MM-dd"),
|
|
|
+ VisaInformationDt = visitDt.AddDays(VisaInformation_advanceDays).ToString("yyyy-MM-dd"),
|
|
|
+ SendVisaDt = visitDt.AddDays(sendVisa_advanceDays).ToString("yyyy-MM-dd"),
|
|
|
+ IssueVisaDt = visitDt.AddDays(issueVisa_advanceDays).ToString("yyyy-MM-dd"),
|
|
|
+ PreTripMeetingDt = visitDt.AddDays(preTripMeeting_advanceDays).ToString("yyyy-MM-dd"),
|
|
|
+ AirportdDropOffDt = visitDt.AddDays(airportdDropOff_advanceDays).ToString("yyyy-MM-dd"),
|
|
|
+ CreateUserId = userId,
|
|
|
+ };
|
|
|
+ _sqlSugar.BeginTran();
|
|
|
+
|
|
|
+ int add1 = await _sqlSugar.Insertable<Grp_InvertedList>(info).ExecuteReturnIdentityAsync();
|
|
|
+ if (add1<1)
|
|
|
+ {
|
|
|
+ _result.Msg = $@"倒推表添加失败!";
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Grp_InvertedListVisaCountry> _InvertedListVisaCountries = new List<Grp_InvertedListVisaCountry>();
|
|
|
+ foreach (var item in visitCountry)
|
|
|
+ {
|
|
|
+ int days = Convert.ToInt32(visaFeeDatas.Find(x => x.VisaCountry.Equals(item.Trim()))?.VisaTime ?? "0");
|
|
|
+
|
|
|
+ _InvertedListVisaCountries.Add(new Grp_InvertedListVisaCountry()
|
|
|
+ {
|
|
|
+ ILId = add1,
|
|
|
+ Country = item,
|
|
|
+ OfficialTypeId = -1,
|
|
|
+ VisaTypeId = -1,
|
|
|
+ VisaDay = days,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ int add2 = await _sqlSugar.Insertable<Grp_InvertedList>(info).ExecuteReturnIdentityAsync();
|
|
|
+
|
|
|
+ _sqlSugar.CommitTran();
|
|
|
+ _result.Code = 0;
|
|
|
+ _result.Msg = @$"操作成功!";
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Update
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="diId"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<Result> _Update(InvertedListUpdateDto dto)
|
|
|
+ {
|
|
|
+ #region 参数验证
|
|
|
+ if (dto.DiId < 1)
|
|
|
+ {
|
|
|
+ _result.Msg = $@"请输入有效的DiId参数值!";
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+ if (dto.Id < 1)
|
|
|
+ {
|
|
|
+ _result.Msg = $@"请输入有效的Id参数值!";
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ Grp_InvertedList _InvertedList = _mapper.Map<Grp_InvertedList>(dto);
|
|
|
+ List<Grp_InvertedListVisaCountry> _InvertedListVisaCountries = new List<Grp_InvertedListVisaCountry>();
|
|
|
+ if (dto.VisaCountryData.Count > 0)
|
|
|
+ {
|
|
|
+ _InvertedListVisaCountries = _mapper.Map<List<Grp_InvertedListVisaCountry>>(dto.VisaCountryData);
|
|
|
+ }
|
|
|
+ _sqlSugar.BeginTran();
|
|
|
+
|
|
|
+ int update1 = await _sqlSugar.Updateable(_InvertedList)
|
|
|
+ .IgnoreColumns(it => new { it.CreateTime,it.IsDel })
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+ if (update1 < 1)
|
|
|
+ {
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ _result.Msg = @$"修改失败!";
|
|
|
+ return _result;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if (_InvertedListVisaCountries.Count > 0)
|
|
|
+ {
|
|
|
+ int update2 = await _sqlSugar.Updateable(_InvertedListVisaCountries)
|
|
|
+ .IgnoreColumns(it => new { it.CreateTime, it.IsDel })
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+
|
|
|
+ if (update2 < 1)
|
|
|
+ {
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ _result.Msg = @$"修改失败!";
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ _sqlSugar.CommitTran();
|
|
|
+ _result.Code = 0;
|
|
|
+ _result.Msg = @$"操作成功!";
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|