Browse Source

appsettings 合并

leiy 2 years ago
parent
commit
3d25d7a9b3

+ 1 - 0
OASystem/EntitySync/Program.cs

@@ -89,6 +89,7 @@ db.CodeFirst.SetStringDefaultLength(50).BackupTable().InitTables(new Type[]
     //typeof(Bus_ConfItemInfo)
     //typeof(Bus_ConfItemListInfo)
     //typeof(Res_CountryFeeCost)
+    typeof(Res_MemoInfo)
     typeof(Fin_DailyFeePayment), // 财务 - 日付申请
     typeof(Fin_DailyFeePaymentContent)  // 财务 - 日付申请详细类
 });

+ 1 - 0
OASystem/OASystem.Api/Controllers/BusinessController.cs

@@ -162,5 +162,6 @@ Where c.ConfListId = {0}", ConfId);
         }
 
         #endregion
+
     }
 }

+ 109 - 3
OASystem/OASystem.Api/Controllers/CRMController.cs

@@ -17,16 +17,24 @@ namespace OASystem.API.Controllers
     {
         private readonly VisaDeleClientCompanyRepository _clientCompanyRepository;
         private readonly VisaDeleClientRepository _clientRepository;
-
+        private readonly CustomerCertRepository _customerCertRep;
+        private readonly CustomerFamilyRepository _customerFamilyRep;
+        private readonly CustomerSchoolRepository _customerSchoolRep;
+        private readonly CustomerCompanyRepository _customerCompanyRep;
         /// <summary>
         /// 初始化
         /// </summary>
         /// <param name="clientCompanyRepository"></param>
         /// <param name="clientRepository"></param>
-        public CRMController(VisaDeleClientCompanyRepository clientCompanyRepository, VisaDeleClientRepository clientRepository)
+        public CRMController(VisaDeleClientCompanyRepository clientCompanyRepository, VisaDeleClientRepository clientRepository,
+            CustomerCertRepository customerCertRep, CustomerFamilyRepository customerFamilyRep,CustomerSchoolRepository customerSchoolRep, CustomerCompanyRepository customerCompanyRep)
         {
             this._clientCompanyRepository = clientCompanyRepository;
             this._clientRepository = clientRepository;
+            this._customerCertRep = customerCertRep;
+            this._customerFamilyRep = customerFamilyRep;
+            this._customerSchoolRep = customerSchoolRep;
+            _customerCompanyRep = customerCompanyRep;
         }
 
         /// <summary>
@@ -92,7 +100,7 @@ namespace OASystem.API.Controllers
         /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> DelClientCompany(ClientCompanyDto dto)
+        public async Task<IActionResult> DelClientCompany(DelBaseDto dto)
         {
             try
             {
@@ -217,5 +225,103 @@ namespace OASystem.API.Controllers
             }
             return Ok(JsonView(false, "程序错误!"));
         }
+        /// <summary>
+        /// 证件表数据删除
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> DelCustomerCerts(DelBaseDto dto)
+        {
+            try
+            {
+                var result = await _customerCertRep.SoftDeleteByIdAsync<Crm_CustomerCert>(dto.Id.ToString(),dto.DeleteUserId);
+                if (!result)
+                {
+                    return Ok(JsonView(false, "删除失败"));
+                }
+                return Ok(JsonView(true, "删除成功!"));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
+
+        /// <summary>
+        /// 家庭成员表数据删除
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> DelCustomerFamily(DelBaseDto dto)
+        {
+            try
+            {
+                var result = await _customerFamilyRep.SoftDeleteByIdAsync<Crm_VisaCustomerFamily>(dto.Id.ToString(), dto.DeleteUserId);
+                if (!result)
+                {
+                    return Ok(JsonView(false, "删除失败"));
+                }
+                return Ok(JsonView(true, "删除成功!"));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
+
+        /// <summary>
+        /// 客户学历表数据删除
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> DelCustomerSchool(DelBaseDto dto)
+        {
+            try
+            {
+                var result = await _customerSchoolRep.SoftDeleteByIdAsync<Crm_VisaCustomerSchool>(dto.Id.ToString(), dto.DeleteUserId);
+                if (!result)
+                {
+                    return Ok(JsonView(false, "删除失败"));
+                }
+                return Ok(JsonView(true, "删除成功!"));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
+        /// <summary>
+        /// 客户工作经历表数据删除
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> DelVisaCustomerCompany(DelBaseDto dto)
+        {
+            try
+            {
+                var result = await _customerCompanyRep.SoftDeleteByIdAsync<Crm_VisaCustomerCompany>(dto.Id.ToString(), dto.DeleteUserId);
+                if (!result)
+                {
+                    return Ok(JsonView(false, "删除失败"));
+                }
+                return Ok(JsonView(true, "删除成功!"));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
     }
 }

+ 24 - 12
OASystem/OASystem.Api/Controllers/MarketCustomerResourcesController.cs

@@ -4,25 +4,37 @@ using OASystem.Infrastructure.Repositories.CRM;
 
 namespace OASystem.API.Controllers
 {
-    public class MarketCustomerResourcesController : Controller
+    [Route("api/[controller]/[action]")]
+    public class MarketCustomerResourcesController : ControllerBase
     {
-        private readonly NewClientDataRepository _clientCompanyRepository;
+        private readonly NewClientDataRepository _clientDataRepository;
         /// <summary>
         /// 初始化
         /// </summary>
-        public MarketCustomerResourcesController(NewClientDataRepository clientCompanyRepository)
+        public MarketCustomerResourcesController(NewClientDataRepository clientDataRepository)
         {
-            this._clientCompanyRepository = clientCompanyRepository;
+            this._clientDataRepository = clientDataRepository;
         }
-
-        public IActionResult ViewDataInit()
-        {
-            return Ok("");
-        }
-
-        public IActionResult QuerySearchData(NewClientDataQueryDto dto)
+        /// <summary>
+        /// 查询客户资料数据
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> QueryNewClientData(NewClientDataQueryDto dto)
         {
-            return Ok("");
+            try
+            {
+                Result resTable = await _clientDataRepository.QueryNewClientData(dto);
+                //Result resSelect = await _clientDataRepository.NewClientSelectData();
+                
+                return Ok(JsonView(true, resTable.Msg, resTable));
+            }
+            catch (Exception)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
         }
     }
 }

+ 238 - 1
OASystem/OASystem.Api/Controllers/ResourceController.cs

@@ -1,4 +1,6 @@
-using System.Collections.Generic;
+using OASystem.API.OAMethodLib;
+using OASystem.Domain.Dtos.Resource;
+using System.Collections.Generic;
 
 namespace OASystem.API.Controllers
 {
@@ -985,6 +987,241 @@ namespace OASystem.API.Controllers
 
         #endregion
         #endregion
+
+        #region 备忘录
+        /// <summary>
+        /// 备忘录查询
+        /// </summary>
+        /// <param name="paras">Json序列化</param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostSearchMemo(JsonDtoBase _jsonDto)
+        {
+            if (string.IsNullOrEmpty(_jsonDto.Paras))
+            {
+                return Ok(JsonView(false, "参数为空"));
+            }
+
+            Search_ResMemoDto _memoDto = JsonConvert.DeserializeObject<Search_ResMemoDto>(_jsonDto.Paras);
+            if (_memoDto != null)
+            {
+                if (_memoDto.SearchType == 2)
+                {
+                    //获取列表
+                    string sqlWhere = string.Format(" Where IsDel=0 ");
+
+                    #region SqlWhere
+
+                    if (!string.IsNullOrEmpty(_memoDto.Abstracts))
+                    {
+                        sqlWhere += string.Format(@" And m.Abstracts Like '%{0}%' ", _memoDto.Abstracts);
+                    }
+                    if (!string.IsNullOrEmpty(_memoDto.Title))
+                    {
+                        sqlWhere += string.Format(@" And m.Title Like '%{0}%' ", _memoDto.Title);
+                    }
+                    if (_memoDto.ReadLevel > 0)
+                    {
+                        sqlWhere += string.Format(@" And m.ReadLevel = {0} ", _memoDto.ReadLevel);
+                    }
+                    #endregion
+
+                    int currPIndex = (((_memoDto.PageIndex > 0) ? (_memoDto.PageIndex - 1) : 0) * _memoDto.PageSize) + 1;
+                    int currPSize = (((_memoDto.PageIndex > 0) ? (_memoDto.PageIndex - 1) : 0) + 1) * _memoDto.PageSize;
+                    string sql = string.Format(@" Select * From(Select ROW_NUMBER() Over(order By m.Id desc) as RowNumber,
+m.Id as MemoId,d.DepName as DepartmentName,m.ReadLevel,m.Title,m.Abstracts,
+m.LastedEditDt,m.LastedEditorId
+From Res_Memo as m With(Nolock) Inner Join Sys_Users as u With(Nolock) On m.CreateUserId=u.Id
+Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id {2}
+) as tb Where tb.RowNumber Between {0} And {1} ", currPIndex, currPSize, sqlWhere);
+                    Res_MemoListView rst = new Res_MemoListView();
+                    rst.CurrPageIndex = currPIndex;
+                    rst.CurrPageSize = currPSize;
+                    List<Res_MemoView> dataSource = _carDataRep._sqlSugar.SqlQueryable<Res_MemoView>(sql).ToList();
+                    Dictionary<int, string> userDic = new Dictionary<int, string>();
+
+                    foreach (var item in dataSource)
+                    {
+                        if (userDic.ContainsKey(item.LastedEditorId))
+                        {
+                            item.LastedEditor = userDic[item.LastedEditorId];
+                        }
+                        else
+                        {
+                            Sys_Users _sysUser = _carDataRep.Query<Sys_Users>(s => s.Id == item.LastedEditorId).First();
+                            userDic[item.LastedEditorId] = _sysUser.CnName;
+                            item.LastedEditor = _sysUser.CnName;
+                        }
+                    }
+                    rst.DataList = new List<Res_MemoView>(dataSource);
+
+                    if (rst.DataList.Count > 0)
+                    {
+                        string sqlCount = string.Format(@" Select Id From Res_Memo as m With(Nolock) {0} ", sqlWhere);
+                        int dataCount = _carDataRep._sqlSugar.SqlQueryable<Res_MemoInfo>(sqlCount).Count();
+                        rst.DataCount = dataCount;
+                    }
+                    return Ok(JsonView(rst));
+                }
+                else
+                {
+                    //获取对象
+                    string sqlSingle = string.Format(@" Select 
+m.Id as MemoId,d.DepName as DepartmentName,m.ReadLevel,m.Title,m.Abstracts,
+m.LastedEditDt,m.LastedEditor,m.MDFilePath
+From Res_Memo as m With(Nolock) Inner Join Sys_Users as u With(Nolock) On m.CreateUserId=u.Id
+Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _memoDto.MemoId);
+                    Res_MemoView _result = _carDataRep._sqlSugar.SqlQueryable<Res_MemoView>(sqlSingle).First();
+                    if (_result != null)
+                    {
+                        Sys_Users _sysUser = _carDataRep.Query<Sys_Users>(s => s.Id == _result.LastedEditorId).First();
+                        _result.LastedEditor = _sysUser.CnName;
+                        _result.MarkDownContent = new IOOperatorHelper().Read(_result.MDFilePath);
+                        return Ok(JsonView(_result));
+                    }
+                }
+            }
+            else
+            {
+                return Ok(JsonView(false, "参数反序列化失败"));
+            }
+
+
+
+
+            return Ok(JsonView(false));
+        }
+
+
+        /// <summary>
+        /// 创建/编辑/删除备忘录信息
+        /// </summary>
+        /// <param name="_dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostEditMemo(Edit_ResMemoDto _dto)
+        {
+            bool rst = false;
+            if (_dto.SysUserId < 1)
+            {
+                return Ok(JsonView(false, "操作人失效"));
+            }
+            Sys_Users _sysUser = _resItemInfoRep.Query<Sys_Users>(s => s.Id == _dto.SysUserId).First();
+            if (_sysUser == null)
+            {
+                return Ok(JsonView(false, "操作人失效02"));
+            }
+
+            if (_dto.EditType >= 0)
+            {
+                if (_dto.ReadLevel < 1)
+                {
+                    return Ok(JsonView(false, "未知的阅读等级"));
+                }
+                if (string.IsNullOrEmpty(_dto.Title.Trim()))
+                {
+                    return Ok(JsonView(false, "标题不能为空"));
+                }
+                if (string.IsNullOrEmpty(_dto.Content.Trim()))
+                {
+                    return Ok(JsonView(false, "正文内容不能为空"));
+                }
+                //新增备忘录
+                DateTime dtNow = DateTime.Now;
+                string dir = AppSettingsHelper.Get("MemoCurrPath");
+                string fileName = dtNow.ToString("yyyyMMddHHmmss") + _dto.Title + ".md";
+                string content = JsonConvert.SerializeObject(_dto.Content);
+                if (_dto.EditType == 0)//新增
+                {
+                    string savePath = new IOOperatorHelper().Write_CoverFile(content, dir, fileName);
+
+                    if (savePath.Length > 0)
+                    {
+                        Res_MemoInfo _insert = new Res_MemoInfo();
+                        _insert.Abstracts = _dto.Abstracts;
+                        _insert.Title = _dto.Title;
+                        _insert.DepartmentId = _sysUser.DepId;
+                        _insert.CreateUserId = _sysUser.Id;
+                        _insert.LastedEditDt = dtNow;
+                        _insert.LastedEditor = _sysUser.Id;
+                        _insert.MDFilePath = savePath;
+                        _insert.ReadLevel = _dto.ReadLevel;
+                        _insert.Title = _dto.Title;
+                        int result = await _resItemInfoRep.AddAsync(_insert);
+                        return Ok(JsonView(result > 0));
+                    }
+                    else
+                    {
+                        return Ok(JsonView(false, "路径保存失败"));
+                    }
+                }
+                else//修改
+                {
+                    if (_dto.MemoId < 1)
+                    {
+                        return Ok(JsonView(false, "MemoId不存在"));
+                    }
+
+                    Res_MemoInfo _source = _resItemInfoRep.Query<Res_MemoInfo>(s => s.Id == _dto.MemoId).First();
+                    if (_source == null)
+                    {
+                        return Ok(JsonView(false, "MemoInfo不存在"));
+                    }
+                    //修改
+                    string sourcePath = _source.MDFilePath;
+                    string recycDir = AppSettingsHelper.Get("MemoRecycleBinPath");
+                    new IOOperatorHelper().MoveFile(sourcePath, recycDir);
+                    string savePath = new IOOperatorHelper().Write_CoverFile(content, dir, fileName);
+
+                    if (savePath.Length > 0)
+                    {
+                        var result = await _resItemInfoRep._sqlSugar.Updateable<Res_MemoInfo>()
+                                                                    .SetColumns(it => it.LastedEditDt == DateTime.Now)
+                                                                    .SetColumns(it => it.LastedEditor == _sysUser.Id)
+                                                                    .SetColumns(it => it.Abstracts == _dto.Abstracts)
+                                                                    .SetColumns(it => it.MDFilePath == savePath)
+                                                                    .SetColumns(it => it.ReadLevel == _dto.ReadLevel)
+                                                                    .SetColumns(it => it.Title == _dto.Title)
+                                                                    .Where(s => s.Id == _source.Id)
+                                                                    .ExecuteCommandAsync();
+                        return Ok(JsonView(result > 0));
+                    }
+                }
+            }
+            else
+            {
+                //删除
+                if (_dto.MemoId < 1)
+                {
+                    return Ok(JsonView(false, "MemoId不存在"));
+                }
+
+                Res_MemoInfo _source = _resItemInfoRep.Query<Res_MemoInfo>(s => s.Id == _dto.MemoId).First();
+                if (_source == null)
+                {
+                    return Ok(JsonView(false, "MemoInfo不存在"));
+                }
+                //修改
+                string sourcePath = _source.MDFilePath;
+                string recycDir = AppSettingsHelper.Get("MemoRecycleBinPath");
+                new IOOperatorHelper().MoveFile(sourcePath, recycDir);
+
+                var result = await _resItemInfoRep._sqlSugar.Updateable<Res_MemoInfo>()
+                                                            .SetColumns(it => it.IsDel == 1)
+                                                            .SetColumns(it => it.DeleteUserId == _sysUser.Id)
+                                                            .SetColumns(it => it.DeleteTime == DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
+                                                            .Where(s => s.Id == _source.Id)
+                                                            .ExecuteCommandAsync();
+                return Ok(JsonView(result > 0));
+
+            }
+
+            return Ok(JsonView(rst));
+        }
+
+        #endregion
     }
 
 

+ 71 - 0
OASystem/OASystem.Api/OAMethodLib/IOOperatorHelper.cs

@@ -0,0 +1,71 @@
+using static StackExchange.Redis.Role;
+
+namespace OASystem.API.OAMethodLib
+{
+    public class IOOperatorHelper
+    {
+
+        /// <summary>
+        /// 写文件(覆盖)
+        /// </summary>
+        /// <param name="content"></param>
+        /// <param name="dir"></param>
+        /// <param name="fileName"></param>
+        /// <returns></returns>
+        public string Write_CoverFile(string content, string dir, string fileName)
+        {
+            if (!System.IO.Directory.Exists(dir)) System.IO.Directory.CreateDirectory(dir);   //该路径不存在时,在当前文件目录下创建文件夹"导出.."
+            //不存在该文件时先创建
+            String filePath = dir + fileName;
+            System.IO.StreamWriter file1 = new System.IO.StreamWriter(filePath, false);     //文件已覆盖方式添加内容
+            file1.Write(content);                                                              //保存数据到文件
+            file1.Close();                                                                  //关闭文件
+            file1.Dispose();                                                                //释放对象
+            return filePath;
+        }
+
+        public string Read(string filePath)
+        {
+            string result = string.Empty;
+
+            try
+            {
+                // 读取文本文件
+                using (StreamReader sr = new StreamReader(filePath))
+                {
+                    string line;
+                    // ReadLine()一行一行的循环读取
+                    //当然可以直接ReadToEnd()读到最后
+                    while ((line = sr.ReadLine()) != null)
+                    {
+                        result += line;
+                    }
+                }
+            }
+            catch (Exception e)
+            {
+
+            }
+
+            result = JsonConvert.DeserializeObject<string>(result);
+
+            return result;
+        }
+
+        /// <summary>
+        /// 移动文件
+        /// </summary>
+        /// <param name="sourceFilePath"></param>
+        /// <param name="RecycleBinPath"></param>
+        /// <returns></returns>
+        public void MoveFile(string sourceFileFullPath, string RecycleBinPath)
+        {
+            //移动文件
+            if (!string.IsNullOrEmpty(sourceFileFullPath) && System.IO.File.Exists(sourceFileFullPath))
+            {
+                string fileName = Path.GetFileName(sourceFileFullPath);
+                System.IO.File.Move(sourceFileFullPath, RecycleBinPath + fileName);
+            }
+        }
+    }
+}

+ 2 - 2
OASystem/OASystem.Api/appsettings.json

@@ -103,9 +103,9 @@
       "CurrencyCode": "ZAR"
     }
   ],
-  "ExcelBaseUrl": "http://132.232.92.186/",
+  "ExcelBaseUrl": "http://132.232.92.186:24/",
   "ExcelBasePath": "C:/Server/File/OA2023/Office/Excel/",
-  "OfficeBaseUrl": "http://132.232.92.186:24/",
+  "OfficeBaseUrl": "http://132.232.92.186/",
   "OfficeTempBasePath": "C:/Server/File/OA2023/Office/"
 
 }

+ 20 - 8
OASystem/OASystem.Domain/Dtos/CRM/NewClientDataQueryDto.cs

@@ -6,34 +6,46 @@ using System.Threading.Tasks;
 
 namespace OASystem.Domain.Dtos.CRM
 {
-    public class NewClientDataQueryDto
+    public class NewClientDataQueryDto:DtoBase
     {
         /// <summary>
         /// 联系人
         /// </summary>
         public string Contact { get; set; }
-        //地区
+        /// <summary>
+        /// 地区
+        /// </summary>
         public string Location { get; set; }
-        //单位
+        /// <summary>
+        /// 单位
+        /// </summary>
         public string Client { get; set; }
 
-        //负责人
+        /// <summary>
+        /// 负责人
+        /// </summary>
         public int Userid { get; set; }
         
         //省域
 
         //单独负责的客户 (只看老张的)
 
-        //权重
-        public char Weight { get; set; }
+        /// <summary>
+        /// 权重
+        /// </summary>
+        //public char Weight { get; set; }
 
 
-        //客户级别(地市州)
+        /// <summary>
+        /// 客户级别(地市州)
+        /// </summary>
         public int Lvlid { get; set; }
 
         //客户类别
 
-        //业务分类
+        /// <summary>
+        /// 业务分类
+        /// </summary>
         public int Business { get; set; }
     }
 }

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

@@ -25,4 +25,18 @@ namespace OASystem.Domain.Dtos
     {
         public string Paras { get; set; }
     }
+    /// <summary>
+    /// 删除参数
+    /// </summary>
+    public class DelBaseDto
+    {
+        /// <summary>
+        /// 删除的数据Id
+        /// </summary>
+        public int Id { get; set; }
+        /// <summary>
+        /// 删除者Id
+        /// </summary>
+        public int DeleteUserId { get; set; }
+    }
 }

+ 46 - 0
OASystem/OASystem.Domain/Dtos/Resource/Res_MemoDto.cs

@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Resource
+{
+    public class Search_ResMemoDto : DtoBase
+    {
+        /// <summary>
+        /// 查询类型(int)
+        /// <list type="table">
+        /// <item>1:对象</item>
+        /// <item>2:列表</item>
+        /// </list>
+        /// </summary>
+        public int SearchType { get; set; }
+
+        #region 对象
+
+        public int MemoId { get; set; }
+
+        #endregion
+
+        public string Title { get; set; }
+        public string Abstracts { get; set; }
+        public int ReadLevel { get; set; }
+
+    }
+
+    public class Edit_ResMemoDto
+    {
+        public int MemoId { get; set; }
+        public int SysUserId { get; set; }
+        public int ReadLevel { get; set; }
+        public string Title { get; set; }
+        public string Content { get; set; }
+        public string Abstracts { get; set; }
+
+        /// <summary>
+        /// 0:添加,1:修改,-1:删除
+        /// </summary>
+        public int EditType { get; set; }
+    }
+}

+ 3 - 3
OASystem/OASystem.Domain/Entities/Customer/Crm_NewClientData.cs

@@ -29,7 +29,7 @@ namespace OASystem.Domain.Entities.Customer
         private string email;
         private string location;
         private string address;
-        private DateTime? birthday;
+        private string birthday;
         private string otherinfo;
         private string wechat;
         private int category;
@@ -129,8 +129,8 @@ namespace OASystem.Domain.Entities.Customer
         /// <summary>
         /// 生日
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "Date")]
-        public DateTime? Birthday { get => birthday; set => birthday = value; }
+        [SugarColumn(IsNullable = true, ColumnDataType = "string")]
+        public string Birthday { get => birthday; set => birthday = value; }
 
         /// <summary>
         /// 其他信息

+ 54 - 0
OASystem/OASystem.Domain/Entities/Resource/Res_MemoInfo.cs

@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.Resource
+{
+    [SugarTable("Res_Memo")]
+    public class Res_MemoInfo : EntityBase
+    {
+        /// <summary>
+        /// 部门Id
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int DepartmentId { get; set; }
+
+        /// <summary>
+        /// 阅读级别,1:个人,2:部门,3:公司
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int ReadLevel { get; set; }
+
+        /// <summary>
+        /// 标题
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "nvarchar(100)")]
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 摘要
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "nvarchar(100)")]
+        public string Abstracts { get; set; }
+
+        /// <summary>
+        /// MarkDown文件路径
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "nvarchar(200)")]
+        public string MDFilePath { get; set; }
+
+        /// <summary>
+        /// 最后更新时间
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "datetime")]
+        public DateTime LastedEditDt { get; set; }
+
+        /// <summary>
+        /// 最后提交用户
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int LastedEditor { get; set; }
+    }
+}

+ 60 - 0
OASystem/OASystem.Domain/ViewModels/CRM/NewClientDataView.cs

@@ -0,0 +1,60 @@
+using OASystem.Domain.Entities.Customer;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.CRM
+{
+    public class NewClientDataView:Crm_NewClientData
+    {
+        /// <summary>
+        /// 总条数
+        /// </summary>
+        public int countPage { get; set; }
+        /// <summary>
+        /// 编号
+        /// </summary>
+        public int RowNumber { get; set; }
+        /// <summary>
+        /// 归属人员
+        /// </summary>
+        public List<AscribedUser> AscribedUser { get; set; }
+        /// <summary>
+        /// 归属部门
+        /// </summary>
+        public List<AscribedDepartment> AscribedDepartment {get; set; }
+    }
+    /// <summary>
+    ///归属人员
+    /// </summary>
+    public class AscribedUser 
+    {
+        /// <summary>
+        /// 人员Id
+        /// </summary>
+        public int UserId { get; set; }
+        /// <summary>
+        /// 归属人员姓名
+        /// </summary>
+        public string CnName { get; set; }
+        public int NewClientDataId { get; set; }
+    }
+
+    /// <summary>
+    ///归属部门
+    /// </summary>
+    public class AscribedDepartment
+    {
+        /// <summary>
+        /// setData部门部门Id
+        /// </summary>
+        public int Id { get; set; }
+        /// <summary>
+        /// 归属部门名称
+        /// </summary>
+        public string Name { get; set; }
+        public int NewClientDataId { get; set; }
+    }
+}

+ 26 - 0
OASystem/OASystem.Domain/ViewModels/Resource/Res_MemoView.cs

@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.Resource
+{
+    public class Res_MemoView
+    {
+        public int MemoId { get; set; }
+        public string DepartmentName { get; set; }
+        public int ReadLevel { get; set; }
+        public string Title { get; set; }
+        public string Abstracts { get; set; }
+        public DateTime LastedEditDt { get; set; }
+        public int LastedEditorId { get; set; }
+        public string LastedEditor { get; set; }
+
+        public string MarkDownContent { get; set; }
+        public string MDFilePath { get; set; }
+    }
+    public class Res_MemoListView : ListViewBase<Res_MemoView>
+    {
+    }
+}

+ 22 - 0
OASystem/OASystem.Infrastructure/Repositories/CRM/CustomerCertRepository.cs

@@ -0,0 +1,22 @@
+using AutoMapper;
+using OASystem.Domain.Entities.Customer;
+using OASystem.Domain.ViewModels.CRM;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Infrastructure.Repositories.CRM
+{
+    public class CustomerCertRepository : BaseRepository<Crm_CustomerCert, CustomerCertView>
+    {
+        private readonly IMapper _mapper;
+        public CustomerCertRepository(SqlSugarClient sqlSugar, IMapper mapper) :
+            base(sqlSugar)
+        {
+            this._mapper = mapper;
+
+        }
+    }
+}

+ 23 - 0
OASystem/OASystem.Infrastructure/Repositories/CRM/CustomerCompanyRepository.cs

@@ -0,0 +1,23 @@
+using AutoMapper;
+using OASystem.Domain.Dtos.CRM;
+using OASystem.Domain.Entities.Customer;
+using OASystem.Domain.ViewModels.CRM;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Infrastructure.Repositories.CRM
+{
+    public class CustomerCompanyRepository : BaseRepository<Crm_VisaCustomerCompany, VisaCustomerCompany>
+    {
+        private readonly IMapper _mapper;
+        public CustomerCompanyRepository(SqlSugarClient sqlSugar, IMapper mapper) :
+            base(sqlSugar)
+        {
+            this._mapper = mapper;
+
+        }
+    }
+}

+ 22 - 0
OASystem/OASystem.Infrastructure/Repositories/CRM/CustomerFamilyRepository.cs

@@ -0,0 +1,22 @@
+using AutoMapper;
+using OASystem.Domain.Dtos.CRM;
+using OASystem.Domain.Entities.Customer;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Infrastructure.Repositories.CRM
+{
+    public class CustomerFamilyRepository : BaseRepository<Crm_VisaCustomerFamily, CustomerFamily>
+    {
+        private readonly IMapper _mapper;
+        public CustomerFamilyRepository(SqlSugarClient sqlSugar, IMapper mapper) :
+            base(sqlSugar)
+        {
+            this._mapper = mapper;
+
+        }
+    }
+}

+ 23 - 0
OASystem/OASystem.Infrastructure/Repositories/CRM/CustomerSchoolRepository.cs

@@ -0,0 +1,23 @@
+using AutoMapper;
+using OASystem.Domain.Dtos.CRM;
+using OASystem.Domain.Entities.Customer;
+using OASystem.Domain.ViewModels.CRM;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Infrastructure.Repositories.CRM
+{
+    public class CustomerSchoolRepository : BaseRepository<Crm_VisaCustomerSchool, VisaCustomerSchool>
+    {
+        private readonly IMapper _mapper;
+        public CustomerSchoolRepository(SqlSugarClient sqlSugar, IMapper mapper) :
+            base(sqlSugar)
+        {
+            this._mapper = mapper;
+
+        }
+    }
+}

+ 263 - 1
OASystem/OASystem.Infrastructure/Repositories/CRM/NewClientDataRepository.cs

@@ -1,9 +1,15 @@
-using OASystem.Domain.Entities.Customer;
+using OASystem.Domain;
+using OASystem.Domain.Dtos.CRM;
+using OASystem.Domain.Entities.Customer;
+using OASystem.Domain.Entities.Resource;
+using OASystem.Domain.ViewModels.CRM;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Xml.Linq;
 
 namespace OASystem.Infrastructure.Repositories.CRM
 {
@@ -12,5 +18,261 @@ namespace OASystem.Infrastructure.Repositories.CRM
         public NewClientDataRepository(SqlSugarClient sqlSugar) :
          base(sqlSugar)
         { }
+
+        /// <summary>
+        /// 客户资料初识初始化
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> QueryNewClientData(NewClientDataQueryDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+            try
+            {
+                List<int> NewClientDataId1= new List<int>();
+                List<int> NewClientDataId2 = new List<int>();
+                string NewClientDataId = "";
+                if (dto.Userid != 0)
+                {
+                    string sql = string.Format(@"select u1.UsersId,u2.CnName,u1.NewClientDataId from Crm_ClientDataAndUser u1,Sys_Users u2 where u1.UsersId=u2.Id and u1.UsersId={0}", dto.Userid);
+                    List<AscribedUser> ascribedUsers = await _sqlSugar.SqlQueryable<AscribedUser>(sql).ToListAsync();
+                    if (ascribedUsers.Count!=0)
+                    {
+                        foreach (var ascribedUser in ascribedUsers)
+                        {
+                            if (ascribedUser.NewClientDataId != 0)
+                            {
+                                NewClientDataId1.Add(ascribedUser.NewClientDataId);
+                            }
+                        }
+                    }
+                    else
+                    {
+                        result = new Result() { Code = -1, Msg = "暂无数据" };
+                    }
+                }
+                if (dto.Business != 0)
+                {
+                    string sql = string.Format(@"select d1.*,d2.Name from Crm_ClientDataAndBusiness d1,Sys_SetData d2 where d1.SetDataId=d2.Id and d1.SetDataId={0}", dto.Business);
+                    List<AscribedDepartment> AscribedDepartment = await _sqlSugar.SqlQueryable<AscribedDepartment>(sql).ToListAsync();
+                    if (AscribedDepartment.Count != 0)
+                    {
+                        foreach (var item in AscribedDepartment)
+                        {
+                            if (item.NewClientDataId!= 0)
+                            {
+                                NewClientDataId2.Add(item.NewClientDataId);
+                            }
+                        }
+                    }
+                    else
+                    {
+                        result = new Result() { Code = -1, Msg = "暂无数据" };
+                    }
+                }
+                List<int> intStr=new List<int>();
+                if (NewClientDataId1.Count!=0 && NewClientDataId2.Count != 0)
+                {
+                    intStr = NewClientDataId1.Intersect(NewClientDataId2).ToList();
+                }else if (NewClientDataId1.Count != 0)
+                {
+                    intStr = NewClientDataId1;
+                }else if (NewClientDataId2.Count != 0)
+                {
+                    intStr = NewClientDataId2;
+                }
+                foreach (var item in intStr)
+                {
+                    NewClientDataId += item + ",";
+                }
+                if (!string.IsNullOrWhiteSpace(NewClientDataId))
+                {
+                    NewClientDataId = NewClientDataId.Substring(0, NewClientDataId.Length - 1);
+                }
+                string sqlWhere = string.Empty;
+                if (!string.IsNullOrWhiteSpace(dto.Contact))
+                {
+                    sqlWhere += string.Format(@" And s.Contact like '%{0}%'", dto.Contact);
+                }
+                if (!string.IsNullOrWhiteSpace(dto.Location))
+                {
+                    sqlWhere += string.Format(@" And s.Location like '%{0}%'", dto.Location);
+                }
+                if (!string.IsNullOrWhiteSpace(dto.Client))
+                {
+                    sqlWhere += string.Format(@" And s.Client like '%{0}%'", dto.Client);
+                }
+                if (!string.IsNullOrWhiteSpace(NewClientDataId))
+                {
+                    sqlWhere += string.Format(@" And s.Id in({0})", NewClientDataId);
+                }
+                //if (!string.IsNullOrWhiteSpace(dto.Weight.ToString()))
+                //{
+                //    sqlWhere += string.Format(@" And Weight )", dto.Weight);
+                //}
+                if (dto.Lvlid!=0)
+                {
+                    sqlWhere += string.Format(@" And s.Lvlid={0}",dto.Lvlid);
+                }
+
+                sqlWhere += string.Format(@" And s.Lvlid=s1.Id And s.IsDel={0} ", 0);
+                if (!string.IsNullOrEmpty(sqlWhere.Trim()))
+                {
+                    Regex r = new Regex("And");
+                    sqlWhere = r.Replace(sqlWhere, "Where", 1);
+                }
+                dto.PageIndex = dto.PageIndex * dto.PageSize - dto.PageSize + 1;
+                dto.PageSize = dto.PageIndex * dto.PageSize;
+                string sqlNew = string.Format(@"select (SELECT  COUNT(1) FROM Crm_NewClientData s left Join Sys_SetData s1  On s.Lvlid=s1.Id {0}) AS countPage,* from (select ROW_NUMBER() 
+                                                over(order by s.CreateTime desc) RowNumber,s.*,s1.Name as 'LvlName' from Crm_NewClientData s left Join Sys_SetData s1  On s.Lvlid=s1.Id {0}) as co where    
+                                                RowNumber between {1} and {2} ", sqlWhere,dto.PageIndex,dto.PageSize);
+                List<NewClientDataView> NewClientDataView = await _sqlSugar.SqlQueryable<NewClientDataView>(sqlNew).ToListAsync();
+                #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<dynamic> _Province = new List<dynamic>();
+                List<Sys_SetData> province = _sqlSugar.Queryable<Sys_SetData>()
+                .Where(u => u.STid == 42 && u.IsDel == 0).ToList();
+                foreach (Sys_SetData item in province)
+                {
+                    var data = new
+                    {
+                        Id = item.Id,
+                        Name = item.Name
+                    };
+                    _Province.Add(data);
+                };
+                //客户级别数据
+                List<dynamic> _level = new List<dynamic>();
+                List<Sys_SetData> level = _sqlSugar.Queryable<Sys_SetData>()
+                .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 = _sqlSugar.Queryable<Sys_SetData>()
+                .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 = _sqlSugar.Queryable<Sys_SetData>()
+                .Where(u => u.STid == 36 && u.IsDel == 0).ToList();
+                foreach (Sys_SetData item in province)
+                {
+                    var data = new
+                    {
+                        Id = item.Id,
+                        Name = item.Name
+                    };
+                    _ServiceClass.Add(data);
+                };
+               
+                #endregion
+                if (NewClientDataView.Count!=0)
+                {
+                    foreach (var item in NewClientDataView)
+                    {
+                        List<AscribedUser> AscribedUser = await _sqlSugar.SqlQueryable<AscribedUser>
+                       ("select u1.UsersId,u2.CnName,u1.NewClientDataId from Crm_ClientDataAndUser u1,Sys_Users u2 where u1.UsersId=u2.Id and NewClientDataId="+ item .Id+ "").ToListAsync();
+                        item.AscribedUser = AscribedUser;
+
+                        List<AscribedDepartment> AscribedDepartment = await _sqlSugar.SqlQueryable<AscribedDepartment>
+                      ("select d1.*,d2.Name from Crm_ClientDataAndBusiness d1,Sys_SetData d2 where d1.SetDataId=d2.Id and NewClientDataId="+item.Id+"").ToListAsync();
+                        item.AscribedDepartment = AscribedDepartment;
+                    }
+                    if (dto.PageSize == 0 && dto.PageIndex == 0)
+                    {
+                        var Data = new
+                        {
+                            ClientTableData= NewClientDataView,
+                            Users = _Users,
+                            Province = _Province,
+                            level = _level,
+                            CustomerClass = _CustomerClass,
+                            ServiceClass = _ServiceClass
+                        };
+                        return result = new Result()
+                        {
+                            Code = 0,
+                            Msg = "查询成功",
+                            Data = Data,
+                        };
+                    }
+                    else
+                    {
+                        int count = NewClientDataView[0].countPage;
+                        float totalPage = (float)count / dto.PageSize;//总页数
+                        if (totalPage == 0) totalPage = 1;
+                        else totalPage = (int)Math.Ceiling((double)totalPage);
+
+                        List<NewClientDataView> NewClientView = new List<NewClientDataView>();
+                        for (int i = 0; i < dto.PageSize; i++)
+                        {
+                            var RowIndex = i + (dto.PageIndex - 1) * dto.PageSize;
+                            if (RowIndex < NewClientDataView.Count)
+                            {
+                                NewClientView.Add(NewClientDataView[RowIndex]);
+                            }
+                            else
+                            {
+                                break;
+                            }
+                        }
+                        var Data = new
+                        {
+                            ClientTableData = new { pageCount = count, totalPage = (int)totalPage, pageIndex = dto.PageIndex, pageSize = dto.PageSize, pageSource = NewClientView },
+                            Users = _Users,
+                            Province = _Province,
+                            level = _level,
+                            CustomerClass = _CustomerClass,
+                            ServiceClass = _ServiceClass
+                        };
+                        return result = new Result()
+                        {
+                            Code = 0,
+                            Msg = "查询成功",
+                            Data = Data
+                        };
+                    }
+                }
+                else
+                {
+                    result = new Result() { Code = -1, Msg = "暂无数据!" };
+                }
+            }
+            catch (Exception)
+            {
+                result = new Result() { Code = -2, Msg = "未知错误" };
+                throw;
+            }
+            return result;
+        }
     }
 }

+ 1 - 1
OASystem/OASystem.Infrastructure/Repositories/CRM/VisaDeleClientRepository.cs

@@ -334,7 +334,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
                             int res = await _sqlSugar.Updateable<Crm_CustomerCert>().Where(a => a.Id == CustomerCert.Id).SetColumns(a => new Crm_CustomerCert
                             {
                                 DcId=CustomerCert.DcId,
-                                SdId = CustomerCert.DcId,
+                                SdId = CustomerCert.SdId,
                                 CertNo = CustomerCert.CertNo,
                                 Country = CustomerCert.Country,
                                 Area = CustomerCert.Area,