yuanrf пре 2 дана
родитељ
комит
99cc5dca46

+ 227 - 0
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -3,7 +3,9 @@ using Aspose.Words;
 using Aspose.Words.Drawing;
 using Aspose.Words.Tables;
 using DiffMatchPatch;
+using Humanizer;
 using Microsoft.AspNetCore.SignalR;
+using Npgsql.Replication.PgOutput.Messages;
 using NPOI.SS.UserModel;
 using NPOI.SS.Util;
 using NPOI.XSSF.UserModel;
@@ -26338,6 +26340,231 @@ ORDER BY
         }
         #endregion
 
+
+        #region 团组会务成本
+
+        /// <summary>
+        /// 团组会务成本数据初始化
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IActionResult> ConferenceAffairsInIt(ConferenceAffairsInItDto Dto)
+        {
+            var expr = _sqlSugar.Queryable<Grp_DelegationInfo>()
+                    .OrderByDescending(x => x.CreateTime)
+                    .Where(x => x.IsDel == 0)
+                    .Select<DelegationEasyView>();
+            DelegationEasyView di = Dto.GroupId == 0 ?
+                    expr.First() :
+                    expr.First(x => x.Id == Dto.GroupId);
+
+            if (di == null)
+            {
+                return Ok(JsonView(false, "团组信息不存在!"));
+            }
+
+            var typeData = await _sqlSugar.Queryable<Sys_SetData>()
+            .Where(x => x.IsDel == 0 && x.STid == 21)
+            .Select(x => new { x.Id, Text = x.Name })
+            .ToListAsync();
+            var groupList = await _sqlSugar.Queryable<Grp_DelegationInfo>()
+            .Where(x => x.IsDel == 0)
+            .Select(x => new { x.Id, x.TeamName })
+            .ToListAsync();
+            var currenyList = await GeneralMethod.PostGroupTeamRateByDiIdAndCTableId(1, di.Id, 98);
+            var userList = await _sqlSugar.Queryable<Sys_Users>()
+            .Where(x => x.IsDel == 0)
+            .Select(x => new { x.Id, x.CnName })
+            .ToListAsync();
+            var units = await _sqlSugar.Queryable<Sys_SetData>()
+            .Where(x => x.IsDel == 0 && x.STid == 119)
+            .Select(x => new { x.Id, Text = x.Name })
+            .ToListAsync();
+
+            var GM = new List<int>();
+            var permissionControlDB = _sqlSugar.Queryable<Sys_SetData>().First(x => x.Id == 1448)?.Remark;
+            try
+            {
+                GM = JsonConvert.DeserializeObject<List<int>>(permissionControlDB);
+            }
+            catch (Exception ex)
+            {
+                GM = new List<int>() { 21 };
+            }
+
+            var isGM = GM.Contains(Dto.UserId);
+            var ConferenceAffairsCost = _sqlSugar.Queryable<ConferenceAffairsCost>()
+                                                 .Where(x => x.IsDel == 0)
+                                                 .Select<ConferenceAffairsCostView>()
+                                                 .First(x=> x.Diid == di.Id);
+
+            if (ConferenceAffairsCost == null)
+            {
+                ConferenceAffairsCost = new ConferenceAffairsCostView();
+                ConferenceAffairsCost.Diid = di.Id;
+                ConferenceAffairsCost.PermissionControl = string.Empty;
+            }
+
+            #region 权限校验
+            var PermissionControl = "," + ConferenceAffairsCost.PermissionControl + ",";
+            if (!PermissionControl.Contains(","+ Dto.UserId+",") && !isGM)
+            {
+                return Ok(JsonView(201, "暂无权限!", new
+                {
+                    typeData,
+                    groupList,
+                    currenyList,
+                    isGM,
+                    userList,
+                    units
+                }));
+            }
+            #endregion
+
+            var ConferenceAffairsCostChi = _sqlSugar.Queryable<ConferenceAffairsCostChild>()
+                .Where(x => x.IsDel == 0 && x.Diid == di.Id)
+                .Select<ConferenceAffairsCostChildView>()
+                .OrderBy(x=>x.Index)
+                .ToList();
+
+            var backData = new
+            {
+                ConferenceAffairsCost,
+                ConferenceAffairsCostChi,
+                typeData,
+                groupList,
+                currenyList,
+                isGM,
+                userList,
+                units
+            };
+
+            return Ok(JsonView(true, "SUCCESS", backData));
+        }
+
+        /// <summary>
+        /// 会务成本保存 
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IActionResult> ConferenceAffairsSave(ConferenceAffairsSaveDto Dto)
+        {
+            _sqlSugar.BeginTran();
+            var data = _mapper.Map<ConferenceAffairsCost>(Dto.ConferenceAffairsCost);
+
+            try
+            {
+                if (data.Id == 0)
+                {
+                    _sqlSugar.Updateable<ConferenceAffairsCost>()
+                        .Where(x => x.Diid == Dto.GroupId)
+                        .SetColumns(x => new ConferenceAffairsCost
+                        {
+                            DeleteTime = DateTime.Now.ToString("yyyy-MM-dd"),
+                            DeleteUserId = Dto.UserId
+                        })
+                        .ExecuteCommand();
+
+                    data.Diid = Dto.GroupId;
+                    data.CreateTime = DateTime.Now;
+                    data.CreateUserId = Dto.UserId;
+                    data.Id =  _sqlSugar.Insertable<ConferenceAffairsCost>(data)
+                                        .ExecuteReturnIdentity();
+                }
+                else
+                {
+                    _sqlSugar.Updateable<ConferenceAffairsCost>(data)
+                        .IgnoreColumns(ignoreAllNullColumns: true)
+                        .ExecuteCommand();
+                }
+
+
+                if (Dto.ConferenceAffairsCostChild.Any())
+                {
+                    var datas = _mapper.Map<List<ConferenceAffairsCostChild>>(Dto.ConferenceAffairsCostChild);
+                    var insertArr = datas.Where(x => x.Id == 0).ToList();
+                    var updateArr = datas.Where(x => x.Id != 0).ToList();
+                    insertArr.ForEach(x => { x.Diid = Dto.GroupId; x.ConferenceAffairsCostId = data.Id; });
+
+                    var inrsetCount = insertArr.Any() ? _sqlSugar.Insertable<ConferenceAffairsCostChild>(insertArr).ExecuteCommand() : 0;
+                    var updateCount = updateArr.Any() ? _sqlSugar.Updateable<ConferenceAffairsCostChild>(updateArr)
+                        .IgnoreColumns(ignoreAllNullColumns: true)
+                        .ExecuteCommand() : 0;
+                }
+
+                _sqlSugar.CommitTran();
+            }
+            catch (Exception ex)
+            {
+                _sqlSugar.RollbackTran();
+                return Ok(JsonView(false, "失败!" + ex.Message));
+            }
+
+            return Ok(JsonView(true,"操作成功!"));
+        }
+
+        [HttpPost]
+        public async Task<IActionResult> ConferenceAffairsAudit(ConferenceAffairsAuditDto Dto)
+        {
+            var count = 0;
+
+            if (Dto.ConferenceAffairsCostChildids.Any())
+            {
+                count = _sqlSugar.Updateable<ConferenceAffairsCostChild>().
+                    Where(x => Dto.ConferenceAffairsCostChildids.Contains(x.Id)).
+                    SetColumns(x => new ConferenceAffairsCostChild
+                    {
+                        ReviewStatus = Dto.ReviewStatus
+                    }).
+                    ExecuteCommand();
+            }
+
+            return Ok(JsonView(true, "操作成功!",count));
+        }
+
+        [HttpPost]
+        public async Task<IActionResult> ConferenceAffairsDelete(ConferenceAffairsDeleteDto Dto)
+        {
+            if (Dto.GroupId < 1) return Ok(JsonView(false, "请传入有效的Id"));
+            if (Dto.UserId < 1) return Ok(JsonView(false, "请传入有效的用户Id"));
+
+            _sqlSugar.BeginTran();
+            try
+            {
+                var delCount = _sqlSugar.Updateable<ConferenceAffairsCost>()
+                    .Where(x => x.Diid == Dto.GroupId)
+                    .SetColumns(x => new ConferenceAffairsCost
+                    {
+                        IsDel = 1,
+                        DeleteTime = DateTime.Now.ToString("yyyy-MM-dd"),
+                        DeleteUserId = Dto.UserId
+                    })
+                    .ExecuteCommand();
+
+                if (delCount > 0)
+                {
+                    _sqlSugar.Updateable<ConferenceAffairsCostChild>()
+                        .Where(x => x.Diid == Dto.GroupId)
+                        .SetColumns(x => new ConferenceAffairsCostChild
+                        {
+                            IsDel = 1,
+                            DeleteTime = DateTime.Now.ToString("yyyy-MM-dd"),
+                            DeleteUserId = Dto.UserId
+                        })
+                        .ExecuteCommand();
+                }
+                _sqlSugar.CommitTran();
+            }
+            catch (Exception ex)
+            {
+                _sqlSugar.RollbackTran();
+                return Ok(JsonView(false, "操作失败!" + ex.Message));
+            }
+            return Ok(JsonView(true, "操作成功!"));
+        }
+
+        #endregion
+
         /// <summary>
         /// 123132123
         /// </summary>

+ 44 - 0
OASystem/OASystem.Api/Controllers/MarketCustomerResourcesController.cs

@@ -1426,6 +1426,50 @@ namespace OASystem.API.Controllers
             });
         }
 
+        [HttpPost]
+        public IActionResult SchoolAllocation()
+        {
+            var clients = _sqlSugar.Queryable<Crm_NewClientData>()
+               .Where(x => x.IsDel == 0)
+               .Select(x => new Crm_NewClientData {Id = x.Id, Client = x.Client })
+               .ToList();
+
+            var keys = new List<string>()
+            {
+                "大学", "学院", "中学", "教育", "学校", "一中", "二中", "七中", "十五中", "二十五中","高校"
+            };
+
+            var count = 0;
+            var insertArr = new List<Crm_ClientDataAndBusiness>();
+            
+            // --368  教育
+
+            foreach (var item in clients)
+            {
+                EncryptionProcessor.DecryptProperties(item);
+
+                foreach (var key in keys)
+                {
+                    if (!string.IsNullOrWhiteSpace(item.Client) && item.Client.Contains(key))
+                    {
+                        insertArr.Add(new Crm_ClientDataAndBusiness
+                        {
+                            NewClientDataId = item.Id,
+                            SetDataId = 368, // 教育
+                            CreateTime = DateTime.Now,
+                            CreateUserId = 235,
+                            IsDel = 0
+                        });
+                    }
+                }
+            }
+
+           count =  _sqlSugar.Insertable(insertArr)
+                .ExecuteCommand();  
+
+           return count > 0 ? Ok(JsonView(true, "分配成功!", count)) : Ok(JsonView(false, "分配失败!"));
+        }
+
         #region 回滚数据记录
 
 

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

@@ -398,7 +398,10 @@ namespace OASystem.Domain.AutoMappers
             CreateMap<VisitingClientsListView, Grp_VisitingClients>();
             #endregion
 
-
+            #region 会务成本
+            CreateMap<ConferenceAffairsCostView, ConferenceAffairsCost>();
+            CreateMap<ConferenceAffairsCostChildView, ConferenceAffairsCostChild>();
+            #endregion
         }
     }
 

+ 52 - 0
OASystem/OASystem.Domain/Dtos/Groups/ConferenceAffairsInIt.cs

@@ -0,0 +1,52 @@
+using OASystem.Domain.ViewModels.Groups;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Groups
+{
+    public class ConferenceAffairsInItDto
+    {
+        public int UserId { get; set; }
+
+        public int GroupId { get; set; }
+    }
+
+    public class ConferenceAffairsSaveDto
+    {
+        /// <summary>
+        /// 会务主表内容
+        /// </summary>
+        public ConferenceAffairsCostView ConferenceAffairsCost { get; set; }
+
+        /// <summary>
+        /// 会务子表内容
+        /// </summary>
+
+        public List<ConferenceAffairsCostChildView> ConferenceAffairsCostChild { get; set; }
+
+        /// <summary>
+        /// 用户Id
+        /// </summary>
+        public int UserId { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int GroupId { get; set; }
+    }
+
+    public class ConferenceAffairsAuditDto
+    {
+        public List<int> ConferenceAffairsCostChildids { get; set; }
+        public int ReviewStatus { get; set; } = 1;
+    }
+
+    public class ConferenceAffairsDeleteDto
+    {
+        public int UserId { get; set; }
+        public int GroupId { get; set; }
+    }
+}

+ 3 - 0
OASystem/OASystem.Domain/Entities/Customer/Crm_ClientDataAndBusiness.cs

@@ -6,6 +6,9 @@ using System.Threading.Tasks;
 
 namespace OASystem.Domain.Entities.Customer
 {
+    /// <summary>
+    /// 客户关联归属表
+    /// </summary>
     [SugarTable("Crm_ClientDataAndBusiness")]
     public class Crm_ClientDataAndBusiness:EntityBase
     {

+ 139 - 0
OASystem/OASystem.Domain/Entities/Groups/ConferenceAffairsCost.cs

@@ -0,0 +1,139 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.Groups
+{
+    /// <summary>
+    /// 会务活动主表
+    /// </summary>
+    public class ConferenceAffairsCost:Entities.EntityBase
+    {
+        /// <summary>
+        /// 城市
+        /// </summary>
+        public string City { get; set; }
+
+        /// <summary>
+        /// 权限控制
+        /// </summary>
+        public string PermissionControl { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int Diid { get; set; }
+
+        /// <summary>
+        /// 分配金额
+        /// </summary>
+        public decimal AllocationAmount { get; set; }
+
+        /// <summary>
+        /// 分配币种
+        /// </summary>
+        public int AllocationCurrency { get;set; }
+
+        /// <summary>
+        /// 分配时汇率
+        /// </summary>
+        public decimal AllocationRate { get; set; }
+
+        /// <summary>
+        /// 分配团组Id
+        /// </summary>
+        public int AllocationGroupId { get; set; }
+    }
+
+
+    /// <summary>
+    /// 会务活动子表
+    /// </summary>
+    public class ConferenceAffairsCostChild : Entities.EntityBase
+    {
+        /// <summary>
+        /// 是否选中
+        /// </summary>
+        //public bool isCheck { get; set; }
+
+        /// <summary>
+        /// 序号
+        /// </summary>
+        public int Index { get; set; }
+        
+        /// <summary>
+        /// 费用类型
+        /// </summary>
+        public int PriceType { get; set; }
+    
+        /// <summary>
+        /// 费用名称
+        /// </summary>
+        public string PriceName { get; set; }
+
+
+        /// <summary>
+        /// 成本费用
+        /// </summary>
+        public decimal CostPrice { get; set; }
+        
+        /// <summary>
+        /// 币种
+        /// </summary>
+        public int Currency { get; set; }
+
+        /// <summary>
+        /// 当时汇率
+        /// </summary>
+        public decimal Rate { get; set; }
+
+        /// <summary>
+        /// 数量
+        /// </summary>
+        public int Count { get; set; }
+
+        /// <summary>
+        /// 单位
+        /// </summary>
+        public int Unit { get; set; }
+
+        /// <summary>
+        /// 系数
+        /// </summary>
+        public decimal Coefficient { get; set; }
+
+        /// <summary>
+        /// 报价金额
+        /// </summary>
+        public decimal BaoJiaPrice { get; set; }
+
+        /// <summary>
+        /// 附加值
+        /// </summary>
+        public decimal AddedValue { get;set; }
+
+
+        /// <summary>
+        /// 明细
+        /// </summary>
+        public string Details { get; set; }
+
+        /// <summary>
+        /// 审核状态
+        /// </summary>
+        public int ReviewStatus { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int Diid { get; set; }
+
+        /// <summary>
+        /// 主表Id
+        /// </summary>
+        public int ConferenceAffairsCostId { get; set; }
+    }
+
+}

+ 143 - 0
OASystem/OASystem.Domain/ViewModels/Groups/ConferenceAffairsCostView.cs

@@ -0,0 +1,143 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.Groups
+{
+    public class ConferenceAffairsCostView
+    {
+        /// <summary>
+        /// 城市
+        /// </summary>
+        public string City { get; set; }
+
+        /// <summary>
+        /// 权限控制
+        /// </summary>
+        public string PermissionControl { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int Diid { get; set; }
+
+        /// <summary>
+        /// 分配金额
+        /// </summary>
+        public decimal AllocationAmount { get; set; }
+
+        /// <summary>
+        /// 分配币种
+        /// </summary>
+        public int AllocationCurrency { get; set; }
+
+        /// <summary>
+        /// 分配时汇率
+        /// </summary>
+        public decimal AllocationRate { get; set; }
+
+        /// <summary>
+        /// 分配团组Id
+        /// </summary>
+        public int AllocationGroupId { get; set; }
+
+
+        public int Id { get; set; }
+
+        public string Remark { get; set; }
+
+    }
+
+
+    public class ConferenceAffairsCostChildView
+    {
+        /// <summary>
+        /// 是否选中
+        /// </summary>
+        //public bool isCheck { get; set; }
+
+        /// <summary>
+        /// 序号
+        /// </summary>
+        public int Index { get; set; }
+
+        /// <summary>
+        /// 费用类型
+        /// </summary>
+        public int PriceType { get; set; }
+
+        /// <summary>
+        /// 费用名称
+        /// </summary>
+        public string PriceName { get; set; }
+
+
+        /// <summary>
+        /// 成本费用
+        /// </summary>
+        public decimal CostPrice { get; set; }
+
+        /// <summary>
+        /// 币种
+        /// </summary>
+        public int Currency { get; set; }
+
+        /// <summary>
+        /// 当时汇率
+        /// </summary>
+        public decimal Rate { get; set; }
+
+        /// <summary>
+        /// 数量
+        /// </summary>
+        public int Count { get; set; }
+
+        /// <summary>
+        /// 单位
+        /// </summary>
+        public int Unit { get; set; }
+
+        /// <summary>
+        /// 系数
+        /// </summary>
+        public decimal Coefficient { get; set; }
+
+        /// <summary>
+        /// 报价金额
+        /// </summary>
+        public decimal BaoJiaPrice { get; set; }
+
+        /// <summary>
+        /// 附加值
+        /// </summary>
+        public decimal AddedValue { get; set; }
+
+
+        /// <summary>
+        /// 明细
+        /// </summary>
+        public string Details { get; set; }
+
+        /// <summary>
+        /// 审核状态
+        /// </summary>
+        public int ReviewStatus { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int Diid { get; set; }
+
+        /// <summary>
+        /// 主表Id
+        /// </summary>
+        //public int ConferenceAffairsCostId { get; set; }
+
+        public int Id { get; set; }
+
+        public string Remark { get; set; }
+
+    }
+}