浏览代码

酒店预订 --> 增加操作(AddOrEdit)记录

LEIYI 3 月之前
父节点
当前提交
90cbcb74f0

+ 2 - 1
OASystem/EntitySync/Program.cs

@@ -142,7 +142,8 @@ db.CodeFirst.SetStringDefaultLength(50).BackupTable().InitTables(new Type[]
     //typeof(Sys_ExchangeRateRecord),//团组接待意见调查 
     //typeof(Res_TranslatorLibrary),//翻译人员库 
     //typeof(Grp_OfficialDutyLinkTranslator),//公务信息关联翻译人员 
-    typeof(Sys_DeviceToken)
+    //typeof(Sys_DeviceToken),
+    typeof(Res_MediaSuppliers)//策划部供应商资料
 
 });
 Console.WriteLine("数据库结构同步完成!");

+ 41 - 4
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -5,6 +5,7 @@ using Aspose.Words.Drawing;
 using Aspose.Words.Tables;
 using EyeSoft.Collections.Generic;
 using EyeSoft.IO;
+using Google.Protobuf.WellKnownTypes;
 using Microsoft.AspNetCore.SignalR;
 using MySqlX.XDevAPI.Relational;
 using NetUV.Core.Handles;
@@ -32,6 +33,7 @@ using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.ViewModels;
 using OASystem.Domain.ViewModels.Groups;
 using OASystem.Domain.ViewModels.Statistics;
+using OASystem.Infrastructure.Repositories.CRM;
 using OASystem.Infrastructure.Repositories.Financial;
 using OASystem.Infrastructure.Repositories.Groups;
 using OfficeOpenXml;
@@ -114,6 +116,7 @@ namespace OASystem.API.Controllers
         private readonly OpinionaireRepository _opinionaireRep;  //对外收款账单仓库
         private readonly List<CurrencyInfo> _currencyInit;
         private readonly List<int> _portTypeData;
+        private readonly TableOperationRecordRepository _tableorRep;
 
         public GroupsController(
             ILogger<GroupsController> logger,
@@ -150,7 +153,8 @@ namespace OASystem.API.Controllers
             FeeAuditRepository feeAuditRep,
             VisaCommissionRepository visaCommissionRep,
             ForeignReceivablesRepository ffrRep,
-            OpinionaireRepository opinionaireRep
+            OpinionaireRepository opinionaireRep,
+            TableOperationRecordRepository tableorRep
             )
         {
             _logger = logger;
@@ -204,6 +208,7 @@ namespace OASystem.API.Controllers
                     new CurrencyInfo (){ CurrencyCode="HKD",CurrencyName = "港币",Rate = 0.9500M },
                 };
             _portTypeData = new List<int>() { 2, 3 };
+            _tableorRep = tableorRep;
 
         }
 
@@ -11733,13 +11738,45 @@ ORDER by  gctggrc.id DESC
                 int ccpId = (int)_view.Data.GetType().GetProperty("ccpId").GetValue(_view.Data, null);
                 int sign = (int)_view.Data.GetType().GetProperty("sign").GetValue(_view.Data, null);
                 int hotelId = (int)_view.Data.GetType().GetProperty("hotelId").GetValue(_view.Data, null);
+
+                var diId = _dto.DiId;
+                var groupInfo = await _groupRepository.Query(x => x.Id == diId).FirstAsync();
+                var ccpInfo = await _sqlSugar.Queryable<Grp_CreditCardPayment>().Where(x => x.Id == ccpId).FirstAsync();
+
+                #region 操作记录
+
+                var opInfo = new Crm_TableOperationRecord() { 
+                    TableName = "Grp_HotelReservations",
+                    PortType = _dto.PortType,
+                    DataId = hotelId,
+                    CreateUserId = _dto.UserId
+                };
+                var opStatus = OperationEnum.NoOperation;
+                if (_dto.Id<1) //添加操作
+                {
+                    opInfo.OperationItem = OperationEnum.Add;
+                }
+                else if (_dto.Id > 0)
+                {
+                    opInfo.OperationItem = OperationEnum.Edit;
+                }
+                string opRemark = string.Empty;
+                if (ccpInfo != null)
+                {
+                    // USD 1211.86、 CNY 8761.75、汇率:7.2300
+                    var currency = _sqlSugar.Queryable<Sys_SetData>().Where(x => x.IsDel == 0 && x.Id == ccpInfo.PaymentCurrency).First()?.Name;
+                    var cnyPrice = ccpInfo.PayMoney * ccpInfo.DayRate;
+                    opRemark = $"{currency} {ccpInfo.PayMoney.ToString("#0.00")}、CNY {cnyPrice.ToString("#0.00")}、汇率:{ccpInfo.DayRate.ToString("#0.0000")}";
+                }
+                opInfo.Remark = opRemark;
+                await _tableorRep.AddAsync(opInfo);
+                #endregion
+
+
                 _logger.LogInformation($"【iOS推送通知Exception】Begin");
                 //2024-10-21 新增LZ UID
                 var userIds = new List<int>() { 21 };
                 string title = $"费用审核";
-                var diId = _dto.DiId;
-                var groupInfo = await _groupRepository.Query(x => x.Id == diId).FirstAsync();
-                var ccpInfo = await _sqlSugar.Queryable<Grp_CreditCardPayment>().Where(x => x.Id == ccpId).FirstAsync();
                 string content = "";
                 if (_dto.Id == 0) content = $"[新增-酒店费用录入({groupInfo?.TeamName ?? "-"})]一项费用:{(ccpInfo.PayMoney * ccpInfo.DayRate).ToString("#0.00")} CNY;";
                 else if (_dto.Id > 0) content = $"[更新-酒店费用录入({groupInfo?.TeamName ?? "-"})]一项费用:{(ccpInfo.PayMoney * ccpInfo.DayRate).ToString("#0.00")} CNY;";

+ 4 - 0
OASystem/OASystem.Domain/AutoMappers/_baseMappingProfile.cs

@@ -251,6 +251,10 @@ namespace OASystem.Domain.AutoMappers
             #region 翻译人员库
             CreateMap<TranslatorLibraryOpDto, Res_TranslatorLibrary>();
             #endregion
+
+            #region 供应商资料库
+            CreateMap<MediaSupplierAddOrEditDto, Res_MediaSuppliers>();
+            #endregion
             #endregion
 
             #region Crm

+ 114 - 0
OASystem/OASystem.Domain/Dtos/Resource/MediaSuppliersDto.cs

@@ -0,0 +1,114 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Resource
+{
+    public class MediaSuppliersDto
+    {
+    }
+
+    public class MediaSupplierInfoDto : PortDtoBase
+    {
+        public int Id { get; set; }
+    }
+
+
+    public class MediaSupplierPageItemDto : DtoBase
+    {
+        /// <summary>
+        /// 搜索条件(联系人、单位、电话)
+        /// </summary>
+        public string Search { get; set; }
+    }
+
+    public class MediaSupplierAddOrEditDto : PortDtoBase
+    {
+        /// <summary>
+        /// 编号
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 用户Id
+        /// </summary>
+        public int CurrUserId { get; set; }
+
+        /// <summary>
+        /// 供应商Type(设置数据外键编号)
+        /// </summary>
+        public int TypeId { get; set; }
+
+        /// <summary>
+        /// 省份
+        /// </summary>
+        public string Privince { get; set; }
+
+        /// <summary>
+        /// 城市
+        /// </summary>
+        public string City { get; set; }
+
+        /// <summary>
+        /// 单位名称
+        /// </summary>
+        public string UnitName { get; set; }
+
+        /// <summary>
+        /// 单位缩写
+        /// </summary>
+        public string UnitAbbreviation { get; set; }
+
+        /// <summary>
+        /// 单位地址
+        /// </summary>
+        public string UnitAddress { get; set; }
+
+        /// <summary>
+        /// 单位联系人
+        /// </summary>
+        public string Contact { get; set; }
+
+        /// <summary>
+        /// 联系人性别
+        /// </summary>
+        public int Sex { get; set; }
+
+        /// <summary>
+        /// 联系人职位
+        /// </summary>
+        public string Post { get; set; }
+
+        /// <summary>
+        /// 联系人电话
+        /// </summary>
+        public string Tel { get; set; }
+
+        /// <summary>
+        /// 联系人邮箱
+        /// </summary>
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 联系人微信
+        /// </summary>
+        public string WeChat { get; set; }
+        /// <summary>
+        /// 传真
+        /// </summary>
+        public string Fax { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+    }
+
+    public class MediaSupplierSoftDelDto : PortDtoBase {
+        public int CurrUserId { get; set; }
+        public int Id { get; set; }
+    }
+
+}

+ 93 - 0
OASystem/OASystem.Domain/Entities/Resource/Res_MediaSuppliers.cs

@@ -0,0 +1,93 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.Resource
+{
+    /// <summary>
+    /// 策划部供应商资料
+    /// </summary>
+    [SugarTable("Res_MediaSuppliers")]
+    public class Res_MediaSuppliers : EntityBase
+    {
+        /// <summary>
+        /// 供应商Type(设置数据外键编号)
+        /// </summary>
+        [SugarColumn(ColumnDescription = "供应商关联团组", ColumnName = "TypeId", IsNullable = true, ColumnDataType = "int")]
+        public int TypeId { get; set; }
+
+        /// <summary>
+        /// 省份
+        /// </summary>
+        [SugarColumn(ColumnDescription = "省份", ColumnName = "Privince", IsNullable = true, ColumnDataType = "varchar(120)")]
+        public string Privince { get; set; }
+
+        /// <summary>
+        /// 城市
+        /// </summary>
+        [SugarColumn(ColumnDescription = "城市", ColumnName = "City", IsNullable = true, ColumnDataType = "varchar(120)")]
+        public string City { get; set; }
+
+        /// <summary>
+        /// 单位名称
+        /// </summary>
+        [SugarColumn(ColumnDescription = "单位名称", ColumnName = "UnitName", IsNullable = true, ColumnDataType = "varchar(200)")]
+        public string UnitName { get; set; }
+
+        /// <summary>
+        /// 单位缩写
+        /// </summary>
+        [SugarColumn(ColumnDescription = "单位缩写", ColumnName = "UnitAbbreviation", IsNullable = true, ColumnDataType = "varchar(200)")]
+        public string UnitAbbreviation { get; set; }
+
+        /// <summary>
+        /// 单位地址
+        /// </summary>
+        [SugarColumn(ColumnDescription = "单位地址", ColumnName = "UnitAddress", IsNullable = true, ColumnDataType = "varchar(120)")]
+        public string UnitAddress { get; set; }
+
+        /// <summary>
+        /// 单位联系人
+        /// </summary>
+        [SugarColumn(ColumnDescription = "单位联系人", ColumnName = "Contact", IsNullable = true, ColumnDataType = "varchar(100)")]
+        public string Contact { get; set; }
+
+        /// <summary>
+        /// 联系人性别
+        /// </summary>
+        [SugarColumn(ColumnDescription = "联系人性别", ColumnName = "Sex", IsNullable = true, ColumnDataType = "int")]
+        public int Sex { get; set; }
+
+        /// <summary>
+        /// 联系人职位
+        /// </summary>
+        [SugarColumn(ColumnDescription = "联系人职位", ColumnName = "Post", IsNullable = true, ColumnDataType = "varchar(100)")]
+        public string Post { get; set; }
+
+        /// <summary>
+        /// 联系人电话
+        /// </summary>
+        [SugarColumn(ColumnDescription = "联系人电话", ColumnName = "Tel", IsNullable = true, ColumnDataType = "varchar(100)")]
+        public string Tel { get; set; }
+
+        /// <summary>
+        /// 联系人邮箱
+        /// </summary>
+        [SugarColumn(ColumnDescription = "联系人邮箱", ColumnName = "Email", IsNullable = true, ColumnDataType = "varchar(100)")]
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 联系人微信
+        /// </summary>
+        [SugarColumn(ColumnDescription = "联系人微信", ColumnName = "WeChat", IsNullable = true, ColumnDataType = "varchar(100)")]
+        public string WeChat { get; set; }
+        /// <summary>
+        /// 传真
+        /// </summary>
+        [SugarColumn(ColumnDescription = "传真", ColumnName = "Fax", IsNullable = true, ColumnDataType = "varchar(100)")]
+        public string Fax { get; set; }
+
+    }
+}

+ 182 - 0
OASystem/OASystem.Infrastructure/Repositories/Resource/MediaSuppliersRepository.cs

@@ -0,0 +1,182 @@
+using OASystem.Domain.Entities.Resource;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using AutoMapper;
+using OASystem.Domain.Dtos.Resource;
+using EyeSoft.Extensions;
+using OASystem.Domain;
+
+namespace OASystem.Infrastructure.Repositories.Resource
+{
+    /// <summary>
+    /// 策划部供应商资料
+    /// 仓储
+    /// </summary>
+    public class MediaSuppliersRepository:BaseRepository<Res_MediaSuppliers, Res_MediaSuppliers>
+    {
+        private readonly IMapper _mapper;
+        private readonly List<int> _portIds;
+        public MediaSuppliersRepository(SqlSugarClient sqlSugar, IMapper mapper) : base(sqlSugar)
+        {
+            _mapper = mapper;
+            _portIds =  new List<int> { 1, 2, 3 };
+        }
+
+        /// <summary>
+        /// 初始化数据
+        /// </summary>
+        /// <returns></returns>
+        public async Task<JsonView> Init()
+        {
+            var result = new JsonView() { Code = 400, Msg = "操作失败" };
+
+            var typeData = await _sqlSugar.Queryable<Sys_SetData>().Where(x => x.IsDel == 0 && x.STid == 21).Select(x => new { x.Id, Text = x.Name }).ToListAsync();
+            result.Code = 200;
+            result.Data = typeData;
+            return result;
+        }
+
+        /// <summary>
+        /// 详情
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<JsonView> Info(MediaSupplierInfoDto dto)
+        {
+            var result = new JsonView() { Code = 400, Msg = "操作失败" };
+
+            if (!_portIds.Contains(dto.PortType)) { result.Msg = MsgTips.Port; return result; }
+
+            if (dto.Id < 1) { result.Msg = MsgTips.Id;return result; }
+
+            var info = await _sqlSugar.Queryable<Res_MediaSuppliers>()
+                .Where(x => x.IsDel == 0 && x.Id == dto.Id)
+                .Select(x => new { 
+                    x.Id,
+                    x.TypeId,
+                    x.Privince,
+                    x.City,
+                    x.UnitName,
+                    x.UnitAbbreviation,
+                    x.UnitAddress,
+                    x.Contact,
+                    x.Sex,
+                    x.Post,
+                    x.Fax,
+                    x.Tel,
+                    x.Email,
+                    x.WeChat,
+                    x.Remark
+                })
+                .FirstAsync();
+
+            result.Code = 200;
+            result.Data = info;
+            return result;
+        }
+
+        /// <summary>
+        /// 分页查询
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<JsonView> PageItem(MediaSupplierPageItemDto dto)
+        {
+            var result = new JsonView() { Code = 400, Msg = "操作失败" };
+
+            if (!_portIds.Contains(dto.PortType)) { result.Msg = MsgTips.Port; return result; }
+
+            var search = dto.Search;
+            RefAsync<int> total = 0;
+            var infos = await _sqlSugar.Queryable<Res_MediaSuppliers>()
+                .LeftJoin<Sys_Users>((ms,u) => ms.CreateUserId == u.Id)
+                .Where((ms, u) => ms.IsDel == 0)
+                .WhereIF(!string.IsNullOrEmpty(search), (ms, u) => ms.UnitName.Contains(search) || ms.Contact.Contains(search) || ms.Tel.Contains(search))
+                .Select((ms, u) => new
+                {
+                    ms.Id,
+                    ms.Privince,
+                    ms.City,
+                    ms.UnitName,
+                    ms.Contact,
+                    ms.Sex,
+                    ms.Post,
+                    ms.Tel,
+                    CreateUserName = u.CnName,
+                    ms.CreateTime
+                })
+                .ToPageListAsync(dto.PageIndex, dto.PageSize, total);
+
+            result.Code = 200;
+            result.Data = infos;
+            result.Count = total;
+            return result;
+        }
+
+        /// <summary>
+        /// 操作(添加 Or 编辑)
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<JsonView> AddOrEdit(MediaSupplierAddOrEditDto dto)
+        {
+            var result = new JsonView() { Code = 400, Msg = "操作失败" };
+
+            if (!_portIds.Contains(dto.PortType)) { result.Msg = MsgTips.Port; return result; }
+            var userId = dto.CurrUserId;
+            if (userId < 1) { result.Msg = MsgTips.UserId; return result; }
+
+            var info = _mapper.Map<Res_MediaSuppliers>(dto);
+            info.CreateUserId = userId;
+            if (info.Id < 1) //添加
+            {
+                var add = await _sqlSugar.Insertable(info).ExecuteCommandAsync();
+                if (add > 0)
+                {
+                    result.Code = 200;
+                    result.Msg = $"操作成功!";
+                }
+            }
+            else if (info.Id > 0) //编辑
+            {
+                var upd = await _sqlSugar.Updateable(info).IgnoreColumns(x => new { x.CreateUserId,x.CreateTime }).ExecuteCommandAsync();
+                if (upd > 0)
+                {
+                    result.Code = 200;
+                    result.Msg = $"操作成功!";
+                }
+            }
+
+            return result;
+        }
+
+        /// <summary>
+        /// 软删除
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<JsonView> SoftDel(MediaSupplierSoftDelDto dto)
+        {
+            var result = new JsonView() { Code = 400, Msg = "操作失败" };
+            int userId = dto.CurrUserId, id = dto.Id;
+            if (!_portIds.Contains(dto.PortType)) { result.Msg = MsgTips.Port; return result; }
+            if (userId < 1) { result.Msg = MsgTips.UserId; return result; }
+            if (id < 1) { result.Msg = MsgTips.Id; return result; }
+
+            var status = await _sqlSugar.Updateable<Res_MediaSuppliers>()
+                .SetColumns(x => new Res_MediaSuppliers() { DeleteUserId = userId, DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") })
+                .Where(x => x.Id == id)
+                .ExecuteCommandAsync();
+            if (status > 0)
+            {
+                result.Code = 200;
+                result.Msg = $"操作成功!";
+            }
+
+            return result;
+        }
+    }
+}