using AutoMapper; using Newtonsoft.Json; using OASystem.Domain; using OASystem.Domain.Dtos.Groups; using OASystem.Domain.Dtos.Resource; using OASystem.Domain.Entities.Groups; using OASystem.Domain.Entities.Resource; using OASystem.Domain.ViewModels; using OASystem.Domain.ViewModels.Groups; using OASystem.Domain.ViewModels.Resource; using OASystem.Infrastructure.Tools; using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace OASystem.Infrastructure.Repositories.Resource { public class InvitationOfficialActivityDataRepository : BaseRepository { private readonly IMapper _mapper; public InvitationOfficialActivityDataRepository(SqlSugarClient sqlSugar, IMapper mapper) : base(sqlSugar) { _mapper = mapper; } /// /// 查询商邀资料列表 /// /// /// public async Task QueryInvitationOfficialActivityData(QueryInvitationOfficialActivityDataDto dto) { Result result = new Result() { Code = -2, Msg = "未知错误" }; try { string sqlWhere = string.Empty; if (!string.IsNullOrWhiteSpace(dto.Country)) { sqlWhere += string.Format(@" And i.Country like '%{0}%'", dto.Country); } if (!string.IsNullOrWhiteSpace(dto.UnitName)) { sqlWhere += string.Format(@" And i.UnitName like '%{0}%'", dto.UnitName); } if (!string.IsNullOrWhiteSpace(dto.Contact)) { sqlWhere += string.Format(@" And i.Contact like '%{0}%'", dto.Contact); } if (!string.IsNullOrWhiteSpace(dto.Delegation)) { sqlWhere += string.Format(@" And ','+i.Delegation+',' like '%,{0},%'", dto.Delegation); } if (!string.IsNullOrWhiteSpace(dto.Field)) { sqlWhere += string.Format(@" And i.Field like '%{0}%'", dto.Field); } if (dto.CreateUserId != 0 && !string.IsNullOrWhiteSpace(dto.CreateUserId.ToString())) { sqlWhere += string.Format(@" And i.CreateUserId={0}", dto.CreateUserId); } if (!string.IsNullOrWhiteSpace(dto.StartCreateTime) && !string.IsNullOrWhiteSpace(dto.EndCreateTime)) { sqlWhere += string.Format(@" And i.CreateTime between '{0}' and '{1}'", dto.StartCreateTime, dto.EndCreateTime); } sqlWhere += string.Format(@"And Isdel={0}", 0); if (!string.IsNullOrEmpty(sqlWhere.Trim())) { Regex r = new Regex("And"); sqlWhere = r.Replace(sqlWhere, "Where", 1); } string sql = string.Format(@"select i.*,(select CnName from Sys_Users where Id=i.CreateUserId ) as CreateUserName from Res_InvitationOfficialActivityData i {0} order by CreateTime desc", sqlWhere); List _ivitiesViews = _sqlSugar.SqlQueryable(sql).ToList(); if (_ivitiesViews.Count != 0) { List _DelegationInfos = _sqlSugar.Queryable().ToList(); foreach (var item in _ivitiesViews) { string delegationNameList = ""; string[] DelegationName = item.Delegation.Split(','); for (int i = 0; i < DelegationName.Length; i++) { //Grp_DelegationInfo _DelegationInfo = await _sqlSugar.Queryable().FirstAsync(a => a.Id ==int.Parse(DelegationName[i])); //if (_DelegationInfo != null) { delegationNameList += _DelegationInfo.TeamName + ","; } delegationNameList += _DelegationInfos.Find(it => it.Id == int.Parse(DelegationName[i]))?.TeamName ?? "Unknown" + ","; } if (!string.IsNullOrWhiteSpace(delegationNameList)) { item.DelegationStr = delegationNameList.Substring(0, delegationNameList.Length - 1); } } if (dto.PageSize == 0 && dto.PageIndex == 0) { result = new Result() { Code = 0, Msg = "查询成功!", Data = _ivitiesViews }; } else { int count = _ivitiesViews.Count; float totalPage = (float)count / dto.PageSize;//总页数 if (totalPage == 0) totalPage = 1; else totalPage = (int)Math.Ceiling((double)totalPage); List invitations = new List(); for (int i = 0; i < dto.PageSize; i++) { var RowIndex = i + (dto.PageIndex - 1) * dto.PageSize; if (RowIndex < _ivitiesViews.Count) { invitations.Add(_ivitiesViews[RowIndex]); } else { break; } } ListViewBase rst = new ListViewBase(); rst.DataList = invitations; rst.DataCount = count; rst.CurrPageIndex = dto.PageIndex; rst.CurrPageSize = dto.PageSize; result = new Result() { Code = 0, Msg = "查询成功!", Data = rst }; } } else { result = new Result() { Code = 0, Msg = "暂无数据!", Data = _ivitiesViews }; } } catch (Exception ex) { result = new Result() { Code = -2, Msg = ex.Message }; } return result; } /// /// 根据Id查询商邀资料信息 /// /// /// /// public async Task Info(int id) { var res = await _sqlSugar.Queryable() .Where(x => x.Id == id && x.IsDel == 0) .FirstAsync(); var _view = _mapper.Map(res); return new JsonView() { Code = StatusCodes.Status200OK, Msg = "操作成功", Data = _view }; } public async Task IOA_OP(OpInvitationOfficialActivityDto dto) { JsonView result = new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = "操作失败1" }; var _info = _mapper.Map(dto); if (dto.Status == 1)//添加 { string selectSql = string.Format(@"select * from Res_InvitationOfficialActivityData where UnitName='{0}' and IsDel='{1}'", dto.UnitName, 0); var res_InvitationOfficial = await _sqlSugar.SqlQueryable(selectSql).FirstAsync();//查询是否存在 if (res_InvitationOfficial != null) { result.Msg = $"该信息已存在,请勿重复添加!"; return result; } #region 处理上传文件 var fileNames = await Upload(dto.Files); if (fileNames.Count > 0) { _info.SndFileName = JsonConvert.SerializeObject(fileNames); } #endregion var id = await _sqlSugar.Insertable(_info).ExecuteReturnIdentityAsync(); if (id < 1) return result; } else if (dto.Status == 2)//修改 { var fileNameJsonStr = string.Empty; var fileNames = await Upload(dto.Files); if (fileNames.Count > 0) { var ioaInfo = await _sqlSugar.Queryable().FirstAsync(x => x.IsDel == 0 && x.Id == dto.Id); if (ioaInfo != null) { var fileName = ioaInfo.SndFileName; if (!string.IsNullOrEmpty(fileName)) { try { var ioaFiles = JsonConvert.DeserializeObject>(fileName); fileNames.AddRange(ioaFiles); } catch (Exception) { fileNames.Add(fileName); } } } fileNameJsonStr = JsonConvert.SerializeObject(fileNames); } bool res = await UpdateAsync(a => a.Id == dto.Id, a => new Res_InvitationOfficialActivityData { Country = dto.Country, City = dto.City, UnitName = dto.UnitName, UnitWeb = dto.UnitWeb, Field = dto.Field, Address = dto.Address, UnitInfo = dto.UnitInfo, Contact = dto.Contact, Job = dto.Job, Tel = dto.Tel, Email = dto.Email, WeChat = dto.WeChat, FaceBook = dto.FaceBook, Ins = dto.Ins, Delegation = dto.Delegation, FilePath = dto.FilePath, SndFileName = fileNameJsonStr, Fax = dto.Fax, CreateUserId = dto.CreateUserId, Remark = dto.Remark }); if (!res) return result; } else { result.Msg = $"请传入Status参数,1添加 2修改!"; return result; } result.Msg = $"操作成功!"; result.Code = StatusCodes.Status200OK; return result; } public async Task< List> Upload(IFormFile[] formFiles) { var fileNames = new List(); if (formFiles != null && formFiles.Length > 0) { var filePath = $@"{AppSettingsHelper.Get("GrpFileBasePath")}/商邀相关文件"; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } foreach (var file in formFiles) { //filePath = @$"{filePath}/{file.FileName}"; var path = Path.Combine(filePath, file.FileName); using (var stream = new FileStream(path, FileMode.Create)) { await file.CopyToAsync(stream); } fileNames.Add(file.FileName); } } return fileNames; } } }