Browse Source

市场客户资料
新增 批量客户指派

leiy 1 year ago
parent
commit
9eed5d44f7

+ 3 - 1
OASystem/EntitySync/Program.cs

@@ -123,7 +123,9 @@ db.CodeFirst.SetStringDefaultLength(50).BackupTable().InitTables(new Type[]
     //typeof(Dis_Intercontinental), //洲
     //typeof(Dis_Country), //国家
     //typeof(Dis_City), //城市 
-    typeof(Fin_GroupExtraCost), //超支费用 
+    //typeof(Fin_GroupExtraCost), //超支费用 
+    typeof(Pm_TaskAllocation), //任务分配 
+    typeof(Pm_TaskRelevanceUser), //任务分配关联人员(完成者) 
 
 });
 Console.WriteLine("数据库结构同步完成!");

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

@@ -20,6 +20,37 @@ namespace OASystem.API.Controllers
         {
             this._clientDataRepository = clientDataRepository;
         }
+
+        /// <summary>
+        /// 客户资料数据
+        /// 基础数据
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> MarketCustomerInit(PortDtoBase dto)
+        {
+            JsonView jw = new JsonView();
+            try
+            {
+                Result resultData = await _clientDataRepository._Init(dto.PortType);
+                if (resultData.Code == 0)
+                {
+                    jw = JsonView(true, resultData.Msg, resultData.Data);
+                }
+                else
+                {
+                    jw = JsonView(false, resultData.Msg, resultData.Data);
+                }
+            }
+            catch (Exception)
+            {
+                jw = JsonView(false, "程序错误!");
+            }
+
+            return Ok(jw);
+        }
+
         /// <summary>
         /// 查询客户资料数据
         /// </summary>
@@ -48,6 +79,7 @@ namespace OASystem.API.Controllers
 
             return Ok(jw);
         }
+        
         /// <summary>
         /// 客户资料操作(Status:1.新增,2.修改)
         /// </summary>
@@ -71,6 +103,7 @@ namespace OASystem.API.Controllers
                 return Ok(JsonView(false, "程序错误!"));
             }
         }
+        
         /// <summary>
         /// 新客户资料操作(删除)
         /// </summary>
@@ -144,5 +177,23 @@ namespace OASystem.API.Controllers
             }
             return Ok(JsonView(true, result.Msg,result.Data));
         }
+
+        /// <summary>
+        /// 新客户资料操作
+        /// 批量分配
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostBatchAssignment(BatchAssignmentDto dto)
+        {
+            var res = await _clientDataRepository._BatchAssignment(dto);
+            if (res.Code != 0)
+            {
+                return Ok(JsonView(false, "操作失败!"));
+            }
+            return Ok(JsonView(true, "操作成功!"));
+        }
     }
 }

+ 4 - 0
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -946,5 +946,9 @@ namespace OASystem.API.Controllers
         }
         #endregion
 
+
+        #region 任务单
+
+        #endregion
     }
 }

+ 18 - 0
OASystem/OASystem.Domain/Dtos/CRM/NewClientDataQueryDto.cs

@@ -190,4 +190,22 @@ namespace OASystem.Domain.Dtos.CRM
         public List<int> AscribedDepartment { get; set; }
 
     }
+
+    /// <summary>
+    /// 批量指派
+    /// </summary>
+    public class BatchAssignmentDto
+    {
+        public int UserId { get; set; }
+
+        /// <summary>
+        /// 客户资料表Id集合
+        /// </summary>
+        public List<int>? ClientDataIdItem { get; set; }
+
+        /// <summary>
+        /// 用户Id集合
+        /// </summary>
+        public List<int>? UserIdItem { get; set; }
+    }
 }

+ 2 - 0
OASystem/OASystem.Domain/Dtos/DtoBase.cs

@@ -89,4 +89,6 @@ namespace OASystem.Domain.Dtos
         /// </summary>
         public int PageId { get; set; }
     }
+
+   
 }

+ 72 - 0
OASystem/OASystem.Domain/Entities/PersonnelModule/Pm_TaskAllocation.cs

@@ -0,0 +1,72 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.PersonnelModule
+{
+    /// <summary>
+    /// 人事 任务单
+    /// 任务分配
+    /// </summary>
+    [SugarTable("Pm_TaskAllocation")]
+    public class Pm_TaskAllocation: EntityBase
+    {
+        /// <summary>
+        /// 团组ID(没有团组为-1)
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 任务归属部门ID
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int DepId { get; set; }
+
+        /// <summary>
+        /// 任务名称
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        public string? TaskName { get; set; }
+
+        /// <summary>
+        /// 任务内容
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
+        public string? TaskContent { get; set; }
+
+        /// <summary>
+        /// 任务优先级 1 2 3 4
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int TaskPriority { get; set; }
+
+        /// <summary>
+        /// 任务预计开始时间(由发布者设置开始时间)
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        public string? PredictBeginTime { get; set; }
+
+        /// <summary>
+        /// 任务预计结束时间(由发布者设置结束时间)
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        public string? PredictEndTime { get; set; }
+
+        /// <summary>
+        ///  0 否 1 是  
+        ///  发布者确认任务是否完成(员工任务完成时间小于或等于有效时间 默认完成)
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int IsComplete { get; set; }
+
+        /// <summary>
+        /// 0 否 1 是  
+        /// 是否纳入绩效考核
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int IsIntoPerformance { get; set; }
+    }
+}

+ 62 - 0
OASystem/OASystem.Domain/Entities/PersonnelModule/Pm_TaskRelevanceUser.cs

@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.PersonnelModule
+{
+    /// <summary>
+    /// 人事 任务单
+    /// 任务分配关联人员(完成者)
+    /// </summary>
+    [SugarTable("Pm_TaskRelevanceUser")]
+    public class Pm_TaskRelevanceUser: EntityBase
+    {
+        /// <summary>
+        /// 任务表外键 Id
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int TAId { get; set; }
+
+        /// <summary>
+        /// 接受任务人员 Id
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int UserId { get; set; }
+
+        /// <summary>
+        /// 实际开始时间
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        public string? BeginTime { get; set; }
+
+        /// <summary>
+        /// 实际结束时间
+        /// 大于任务分配的预计结束时间 默认未完成 其他原因
+        /// 大于任务分配的预计结束时间且未开始 默认未完成 原因 未开始
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        public string? OverTime { get; set; }
+
+        /// <summary>
+        /// 任务状态 
+        /// 0 已知晓 1 进行中 2 待审核 3 未完成  4 已完成 5任务中止
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int TaskStatus { get; set; }
+
+        /// <summary>
+        /// 未完成原因
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")]
+        public string? Cause { get; set; }
+
+        /// <summary>
+        /// 评分 
+        /// 1 优秀(9-10) 2 良好(7-9) 3 一般(5-6) 4 不合格(0-5)
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int Score { get; set; }
+    }
+}

+ 1 - 49
OASystem/OASystem.Domain/ViewModels/CRM/NewClientDataView.cs

@@ -9,7 +9,7 @@ using System.Threading.Tasks;
 namespace OASystem.Domain.ViewModels.CRM
 {
 
-    public class NewClientDataIOSView
+    public class NewClientDataAndroidIOSView
     {
         /// <summary>
         /// 编号
@@ -18,25 +18,6 @@ namespace OASystem.Domain.ViewModels.CRM
 
         public int Id { get; set; }
 
-        /// <summary>
-        /// 客户分类
-        /// </summary>
-        public string? CategoryStr { get; set; }
-
-        /// <summary>
-        /// 地市州Id
-        /// </summary>
-        public string? LvlidStr { get; set; }
-
-        /// <summary>
-        /// 归属人员
-        /// </summary>
-        public List<string>? AscribedUser { get; set; }
-
-        /// <summary>
-        /// 归属部门
-        /// </summary>
-        public List<string>? AscribedDepartment { get; set; }
 
         /// <summary>
         /// 客户单位
@@ -58,40 +39,11 @@ namespace OASystem.Domain.ViewModels.CRM
         /// </summary>
         public string? Telephone { get; set; }
 
-        /// <summary>
-        /// 手机号
-        /// </summary>
-        public string? Phone { get; set; }
-
         /// <summary>
         /// 所在区域
         /// </summary>
         public string? Location { get; set; }
 
-        /// <summary>
-        /// 生日
-        /// </summary>
-        public string? Birthday { get; set; }
-
-        /// <summary>
-        /// 权重
-        /// </summary>
-        public string? Weight { get; set; }
-
-        /// <summary>
-        /// 预计出团
-        /// </summary>
-        public int PreDele { get; set; }
-
-        /// <summary>
-        /// 已出团
-        /// </summary>
-        public int FinlishedDele { get; set; }
-
-        /// <summary>
-        /// 备注
-        /// </summary>
-        public string? Remark { get; set; }
     }
 
     public class NewClientDataView:Crm_NewClientData

+ 166 - 49
OASystem/OASystem.Infrastructure/Repositories/CRM/NewClientDataRepository.cs

@@ -1,6 +1,7 @@
 using AutoMapper;
 using AutoMapper.Execution;
 using MySqlX.XDevAPI.Relational;
+using NPOI.OpenXmlFormats.Dml.Diagram;
 using OASystem.Domain;
 using OASystem.Domain.Dtos;
 using OASystem.Domain.Dtos.CRM;
@@ -29,6 +30,110 @@ namespace OASystem.Infrastructure.Repositories.CRM
             _mapper = mapper;
         }
 
+
+        /// <summary>
+        /// 客户资料
+        /// 基础数据源
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> _Init(int portType)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+
+            if (portType == 1 || portType == 2 || portType == 3)
+            {
+                #region 下拉框初始化数据
+                //负责人下拉框
+                List<dynamic> _Users = new List<dynamic>();
+                List<Sys_Users> users = _sqlSugar.Queryable<Sys_Users>()
+                .Where(u => (u.CnName == "张海麟" || u.CnName == "安宁" || u.CnName == "李彩娟" || u.CnName == "舒庆" || u.CnName == "李媛媛") && u.IsDel == 0).ToList();
+                foreach (Sys_Users user in users)
+                {
+                    var data = new
+                    {
+                        Id = user.Id,
+                        Name = user.CnName
+                    };
+                    _Users.Add(data);
+                };
+
+
+                List<Sys_SetData> initData = _sqlSugar.Queryable<Sys_SetData>().Where(it => it.IsDel == 0).ToList();
+
+                //客户级别数据
+                List<dynamic> _level = new List<dynamic>();
+                List<Sys_SetData> level = initData.Where(u => u.STid == 33 && u.IsDel == 0).ToList();
+                foreach (Sys_SetData item in level)
+                {
+                    var data = new
+                    {
+                        Id = item.Id,
+                        Name = item.Name
+                    };
+                    _level.Add(data);
+                };
+                //客户类别
+                List<dynamic> _CustomerClass = new List<dynamic>();
+                List<Sys_SetData> CustomerClass = initData.Where(u => u.STid == 37 && u.IsDel == 0).ToList();
+                foreach (Sys_SetData item in CustomerClass)
+                {
+                    var data = new
+                    {
+                        Id = item.Id,
+                        Name = item.Name
+                    };
+                    _CustomerClass.Add(data);
+                };
+                //业务分类 
+                List<dynamic> _ServiceClass = new List<dynamic>();
+                List<Sys_SetData> ServiceClass = initData.Where(u => u.STid == 36 && u.IsDel == 0).ToList();
+                foreach (Sys_SetData item in ServiceClass)
+                {
+                    var data = new
+                    {
+                        Id = item.Id,
+                        Name = item.Name
+                    };
+                    _ServiceClass.Add(data);
+                };
+
+                //身份分类
+                List<dynamic> _ProvinceClass = new List<dynamic>();
+                List<Sys_SetData> ProvinceClass = initData.Where(u => u.STid == 42 && u.IsDel == 0).ToList();
+                foreach (Sys_SetData item in ProvinceClass)
+                {
+                    var data = new
+                    {
+                        Id = item.Id,
+                        Name = item.Name
+                    };
+                    _ProvinceClass.Add(data);
+                };
+                #endregion
+                var data1 = new {
+                    Users = _Users,
+                    Level = _level,
+                    CustomerClass = _CustomerClass,
+                    ServiceClass= _ServiceClass,
+                    ProvinceClass = _ProvinceClass
+                };
+                return result = new Result()
+                {
+                    Code = 0,
+                    Msg = "查询成功",
+                    Data = data1
+                };
+
+            }
+            else
+            {
+                result.Msg = string.Format("请传入有效的PortType参数!");
+            }
+            return result;
+        }
+
+
         /// <summary>
         /// 客户资料初识初始化
         /// </summary>
@@ -345,68 +450,24 @@ namespace OASystem.Infrastructure.Repositories.CRM
                         };
 
                     }
-                    else if (dto.PortType == 2)
-                    {
-
-                        foreach (var item in NewClientDataView)
-                        {
-                            List<AscribedUser> AscribedUser = await _sqlSugar.SqlQueryable<AscribedUser>
-                           ("select u1.UsersId as UserId ,u2.CnName,u1.NewClientDataId from Crm_ClientDataAndUser u1,Sys_Users u2 where u1.UsersId=u2.Id and NewClientDataId=" + item.Id + " AND u1.ISDEL = 0").ToListAsync();
-                            item.AscribedUser = AscribedUser.Select(x=> x.UserId);
-
-                            List<AscribedDepartment> AscribedDepartment = await _sqlSugar.SqlQueryable<AscribedDepartment>
-                          ("select  d2.Id,d2.Name,d1.NewClientDataId  from Crm_ClientDataAndBusiness d1,Sys_SetData d2 where d1.SetDataId=d2.Id and NewClientDataId=" + item.Id + "  AND d1.ISDEL = 0").ToListAsync();
-                            item.AscribedDepartment = AscribedDepartment.Select(x => x.Id);
-                        }
-
-
-                        result = new Result()
-                        {
-                            Code = 0,
-                            Msg = "查询成功",
-                            Data = new { pageCount = count, totalPage = (int)totalPage, pageIndex = dto.PageIndex, pageSize = dto.PageSize, pageSource = NewClientDataView },
-                        };
-                    }
-                    else if (dto.PortType == 3)
+                    else if (dto.PortType == 2 || dto.PortType == 3)
                     {
-                        List<AscribedUser> AscribedUser = await _sqlSugar.SqlQueryable<AscribedUser>
-                           ("select u1.UsersId as UserId ,u2.CnName,u1.NewClientDataId from Crm_ClientDataAndUser u1,Sys_Users u2 where u1.UsersId=u2.Id  AND u1.ISDEL = 0").ToListAsync();
-
-                        List<AscribedDepartment> AscribedDepartment = await _sqlSugar.SqlQueryable<AscribedDepartment>
-                         ("select  d2.Id,d2.Name,d1.NewClientDataId  from Crm_ClientDataAndBusiness d1,Sys_SetData d2 where d1.SetDataId=d2.Id AND d1.ISDEL = 0").ToListAsync();
-                        List<NewClientDataIOSView> newClientDataIOSViews = new List<NewClientDataIOSView>();
+                        List<NewClientDataAndroidIOSView> newClientDataIOSViews = new List<NewClientDataAndroidIOSView>();
                         foreach (var item in NewClientDataView)
                         {
-                            
-                            var ascribedUser = AscribedUser.Where(it => it.NewClientDataId == item.Id).Select(x => x.CnName).ToList();
-
-
-                            var ascribedDepartment = AscribedDepartment.Where(it => it.NewClientDataId == item.Id).Select(x => x.Name).ToList();
 
-
-                            newClientDataIOSViews.Add(new NewClientDataIOSView() {
-                                Id = item.Id,
+                            newClientDataIOSViews.Add(new NewClientDataAndroidIOSView()
+                            {
                                 RowNumber = item.RowNumber,
-                                CategoryStr = item.CategoryStr,
-                                LvlidStr = item.LvlidStr,
-                                AscribedUser = ascribedUser,
-                                AscribedDepartment = ascribedDepartment,
+                                Id = item.Id,
                                 Client = item.Client,
                                 Contact = item.Contact,
                                 Job = item.Job,
                                 Telephone = item.Telephone,
-                                Phone = item.Phone,
                                 Location = item.Location,
-                                Birthday = item.Birthday,
-                                Weight = item.Weight,
-                                PreDele = item.PreDele,
-                                FinlishedDele = item.FinlishedDele,
-                                Remark = item.Remark,
                             });
-
                         }
 
-
                         result = new Result()
                         {
                             Code = 0,
@@ -414,6 +475,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
                             Data = new { pageCount = count, totalPage = (int)totalPage, pageIndex = dto.PageIndex, pageSize = dto.PageSize, pageSource = newClientDataIOSViews },
                         };
                     }
+                    
                 }
                 else
                 {
@@ -756,5 +818,60 @@ namespace OASystem.Infrastructure.Repositories.CRM
 
             return AcrionResult;
         }
+
+        /// <summary>
+        /// 市场客户资料数据
+        /// 批量指派
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> _BatchAssignment(BatchAssignmentDto dto)
+        {
+            Result AcrionResult = new Result() { Code = -1,Msg="操作失败"};
+            if (dto.UserIdItem != null || dto.UserIdItem.Count < 1)
+            {
+                AcrionResult.Msg = "用户ID集合不能为空!";
+                return AcrionResult;
+            }
+
+            if (dto.ClientDataIdItem != null || dto.ClientDataIdItem.Count < 1)
+            {
+                AcrionResult.Msg = "客户资料ID集合不能为空!";
+                return AcrionResult;
+            }
+
+            List<Crm_ClientDataAndUser> _ClientDataAndUsers = new List<Crm_ClientDataAndUser>();
+
+            List < Crm_ClientDataAndUser > _ClientDataAndUsers1 = await _sqlSugar.Queryable< Crm_ClientDataAndUser >().Where(it => it.IsDel == 0).ToListAsync();
+            foreach (var clientDataId in dto.ClientDataIdItem)
+            {
+                Crm_ClientDataAndUser ClientDataAndUser = new Crm_ClientDataAndUser()
+                { 
+                    CreateUserId = dto.UserId,
+                    NewClientDataId = clientDataId
+                };
+
+                foreach (var userId in dto.UserIdItem)
+                {
+                    ClientDataAndUser.usersId = userId;
+                    Crm_ClientDataAndUser _ClientDataAndUsers2 = _ClientDataAndUsers1.Where(it => it.NewClientDataId == clientDataId && it.usersId == userId).FirstOrDefault();
+                    if (_ClientDataAndUsers2 == null)
+                    {
+                        _ClientDataAndUsers.Add(ClientDataAndUser);
+                    }
+                }
+            }
+            if (_ClientDataAndUsers.Count > 0)
+            {
+                var adds = await _sqlSugar.Insertable(_ClientDataAndUsers).ExecuteCommandAsync();
+                if (adds > 0)
+                {
+                    AcrionResult.Code = 0;
+                    return AcrionResult;
+                }
+            }
+
+            return AcrionResult;
+        }
     }
 }