| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377 | 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 = groupData,                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();                info.IsQuery = true;                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();                }                string sqqzRemark = "";                //签证费用标准                var visaFeeDatas = await _sqlSugar.Queryable<Res_CountryFeeCost>().Where(it => it.IsDel == 0).ToListAsync();                List<VisaCountryInfo> visaCountryInfos = new List<VisaCountryInfo>();                string countryStr = "";                string countryDesc = "";                foreach (var item in visitCountry)                {                    int visaDays = Convert.ToInt32(visaFeeDatas.Find(it => it.VisaCountry.Equals(item.Trim()))?.VisaTime ?? "0");                    visaCountryInfos.Add(new VisaCountryInfo()                    {                        Country = item,                        OfficialTypeId = -1,                        VisaTypeId = -1,                        VisaDay = visaDays                    });                    countryStr += $"{item}、";                    countryDesc += $"{item}签证{visaDays}个工作日,";                }                if (countryStr.Length > 0)                {                    countryStr = countryStr.Substring(0, countryStr.Length - 1);                }                if (countryDesc.Length > 0)                {                    countryDesc = countryDesc.Substring(0, countryDesc.Length - 1);                }                sqqzRemark = $"申请{countryStr}签证;{countryDesc}\r\n(签证周期仅供参考)";                info.VisaCountryData = visaCountryInfos;                info.SendVisaRemark = sqqzRemark;                _result.Data = info;                _result.Msg = "未查询到数据!";                _result.Code = 0;                return _result;             }            int ilId = info.Id;            string visaSql = string.Format(@$"Select * From Grp_InvertedListVisaCountry Where Isdel={0} And ILId = {ilId}");            var visaCountryInfo = await _sqlSugar.SqlQueryable<VisaCountryInfo>(visaSql).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();            string sqqzRemark = "";            List<VisaCountryInfo> visaCountryInfos = new List<VisaCountryInfo>();            string countryStr = string.Empty,countryDesc = string.Empty;            foreach (var item in visitCountry)            {                int visaDays = Convert.ToInt32(visaFeeDatas.Find(it => it.VisaCountry.Equals(item.Trim()))?.VisaTime ?? "0");                visaCountryInfos.Add(new VisaCountryInfo()                {                    Country = item,                    OfficialTypeId = -1,                    VisaTypeId = -1,                    VisaDay = visaDays                });                countryStr += $"{item}、";                countryDesc += $"{item}签证{visaDays}个工作日,";            }            if (countryStr.Length > 0) countryStr = countryStr[..^1];            if (countryDesc.Length > 0) countryDesc = countryDesc[..^1];            sqqzRemark = $"申请{countryStr}签证;{countryDesc}\r\n(签证周期仅供参考)";            /*             * 默认步骤所需提前天数             * 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"),                AirTicketDt = visitDt.AddDays(issueVisa_advanceDays).ToString("yyyy-MM-dd"), //机票 应国交部要求默认使用出签时间                HotelDt = 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,            };            if (!string.IsNullOrEmpty(sqqzRemark)) info.SendVisaRemark = sqqzRemark;            _sqlSugar.BeginTran();            int add1 = await _sqlSugar.Insertable<Grp_InvertedList>(info).ExecuteReturnIdentityAsync();            if (add1<1)            {                _result.Msg = $@"倒推表添加失败!";                _sqlSugar.RollbackTran();                return _result;            }            var _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_InvertedListVisaCountry>(_InvertedListVisaCountries).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;        }            }}
 |