Parcourir la source

Merge branch 'develop' of http://132.232.92.186:3000/XinXiBu/OA2023 into develop

jiangjc il y a 1 an
Parent
commit
570e3766d4

+ 65 - 0
OASystem/OASystem.Api/Controllers/CRMController.cs

@@ -1,8 +1,10 @@
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
+
 using OASystem.Domain.Dtos.CRM;
 using OASystem.Domain.Entities.Customer;
 using OASystem.Infrastructure.Repositories.CRM;
+using static OpenAI.GPT3.ObjectModels.SharedModels.IOpenAiModels;
 
 namespace OASystem.API.Controllers
 {
@@ -125,6 +127,69 @@ namespace OASystem.API.Controllers
 
             return Ok(JsonView(clientData.Data, clientData.Data.Count));
         }
+        /// <summary>
+        /// 根据Id获取签证客户信息
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> CustomerInfo(CustomerDto dto)
+        {
+            try
+            {
+                Crm_DeleClient crm_Dele = await _clientRepository.GetAsync<Crm_DeleClient>(x => x.Id == dto.Id);
+                if (crm_Dele == null)
+                {
+                    return Ok(JsonView(false, "查询失败!"));
+                }
+                List<Crm_VisaCustomerCompany> _VisaCustomerCompany = _clientRepository.Query<Crm_VisaCustomerCompany>(x => x.DcId == crm_Dele.Id && x.IsDel == 0).ToList();//客户工作经历表
+                List<Crm_VisaCustomerSchool> _VisaCustomerSchool = _clientRepository.Query<Crm_VisaCustomerSchool>(x => x.DcId == crm_Dele.Id && x.IsDel == 0).ToList();//客户学历表
+                List<Crm_VisaCustomerFamily> _VisaCustomerFamily = _clientRepository.Query<Crm_VisaCustomerFamily>(x => x.DcId == crm_Dele.Id && x.IsDel == 0).ToList();//客户学历表
+                List<Crm_CustomerCert> _CustomerCerts= _clientRepository.Query<Crm_CustomerCert>(x => x.DcId == crm_Dele.Id && x.IsDel == 0).ToList();//客户证件表
+                Crm_CustomerCompany _CustomerCompany =await _clientCompanyRepository.GetAsync<Crm_CustomerCompany>(x => x.Id == crm_Dele.CrmCompanyId);//客户公司信息
+                var data = new
+                {
+                    DeleClient = crm_Dele,
+                    WorkExperience = _VisaCustomerCompany,
+                    CustomerSchool = _VisaCustomerSchool,
+                    CustomerFamily = _VisaCustomerFamily,
+                    CustomerCompany= _CustomerCompany,
+                    CustomerCerts= _CustomerCerts
+                };
+                return Ok(JsonView(true, "查询成功!", data));
+            }
+            catch (Exception)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
 
+        /// <summary>
+        /// 客户资料操作(Status:1.新增,2.修改)
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> EditCustomer(DeleClientOpDto dto)
+        {
+            try
+            {
+                Domain.Result result =await _clientRepository.OpCustomer(dto);
+                if (result.Code != 0)
+                {
+                    return Ok(JsonView(false, result.Msg));
+                }
+                return Ok(JsonView(true, result.Msg));
+            }
+            catch (Exception)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+            return Ok(JsonView(false, "程序错误!"));
+        }
     }
 }

+ 1 - 1
OASystem/OASystem.Api/Controllers/SystemController.cs

@@ -1208,7 +1208,7 @@ namespace OASystem.API.Controllers
                     var uids = string.Join(',', users.Select(x => x.Id)).TrimEnd(',');
                     var RemoveUserAuthorityListAndTemp = _UserAuthorityRepository._sqlSugar.SqlQueryable<Sys_UserAuthority>($@"
                            select a.* from Sys_UserAuthority a, Sys_SetData b ,Sys_SystemMenuPermission c
-                           where a.SmId = c.Id and c.Mid = b.Id and uid in ({uids}) and  c.Mid =716 and IsTemp = 1                       
+                           where a.SmId = c.Id and c.Mid = b.Id and uid in ({uids}) and  c.Mid = {dto.modulId} and IsTemp = 1                       
                     ").ToList();
 
                     foreach (var user in users)

+ 2 - 2
OASystem/OASystem.Api/Controllers/TencentOCRController.cs

@@ -136,10 +136,10 @@ namespace OASystem.API.Controllers
             dic.Add("Authority", iDCardOCRView.Authority);
             dic.Add("ValidDate", iDCardOCRView.ValidDate);
 
-            string downPath = string.Format("C:\\Server\\File\\OA2023\\Office\\Word\\TencentOCR\\Save\\{0}.doc",
-                dic["Name"].ToString() + "身份证(人像面)" + DateTime.Now.ToString("yyyyMMddHHmmss"));
+            string downPath = string.Format("{0}.doc",dic["Name"].ToString() + "身份证(人像面)" + DateTime.Now.ToString("yyyyMMddHHmmss"));
 
             string serverPathh = AsposeHelper.ExpertWordToModel(tempPath, downPath, dic, null);
+
             iDCardOCRView.DownUrl = serverPathh.Replace("C:", "http:\\132.232.92.186");
             #endregion
 

+ 58 - 4
OASystem/OASystem.Api/OAMethodLib/File/AsposeHelper.cs

@@ -11,17 +11,17 @@ namespace OASystem.API.OAMethodLib.File
     public class AsposeHelper
     {
 
-        #region downWordToModel
+        #region DownWordToModel
 
         /// <summary>
         /// 根据Word模板进行数据的导出Word操作
         /// </summary>
         /// <param name="tempPath">模板路径</param>
-        /// <param name="outputPath">保存路径</param>
+        /// <param name="outputFileName">保存文件名称</param>
         /// <param name="dic">数据源 key 对应 value</param>
         /// <param name="listDt">需要循环的数据DataTable  多个注意DataTableName </param>
         /// <returns>返回的文档路径</returns>
-        public static string ExpertWordToModel(string tempPath, string outputPath, Dictionary<string,object> dic, List<DataTable>? listDt)
+        public static string ExpertWordToModel(string tempPath, string outputFileName, Dictionary<string,object> dic, List<DataTable>? listDt)
         {
             try
             {
@@ -54,6 +54,8 @@ namespace OASystem.API.OAMethodLib.File
                 //合并模版,相当于页面的渲染
                 doc.MailMerge.Execute(new[] { "PageCount" }, new object[] { doc.PageCount });
                 //保存合并后的文档
+
+                string outputPath = string.Format("C:\\Server\\File\\OA2023\\Office\\Word\\TencentOCR\\Save\\{0}", outputFileName);
                 doc.Save(outputPath); 
                 return outputPath; //返回下载地址
             }
@@ -72,6 +74,58 @@ namespace OASystem.API.OAMethodLib.File
         }
         #endregion
 
-       
+        #region DownExcelToModel
+        /// <summary>
+        /// 根据Word模板进行数据的导出Word操作
+        /// </summary>
+        /// <param name="tempPath">模板路径</param>
+        /// <param name="outputPath">保存路径</param>
+        /// <param name="dic">数据源 key 对应 value</param>
+        /// <param name="listDt">需要循环的数据DataTable  多个注意DataTableName </param>
+        /// <returns>返回的文档路径</returns>
+        public static string ExpertExcelToModel(string tempPath, string outputFileName, Dictionary<string, object> dic, List<DataTable>? listDt)
+        {
+            try
+            {
+                removeWatermark();//加载监听,用于去除水印
+
+                List<string> fieldNames = new List<string>();  //字段名字符串数组
+                List<object> fieldValues = new List<object>(); //字段值数组
+
+                foreach (string key in dic.Keys)
+                {
+                    fieldNames.Add(key);
+                    fieldValues.Add(dic[key]);
+                }
+
+                //载入模板
+                Document doc = new Document(tempPath);
+                doc.MailMerge.Execute(fieldNames.ToArray(), fieldValues.ToArray());
+                //将我们获得的DataTable类型的数据:EduDataTable放入doc方法中做处理
+                if (listDt != null && listDt.Count > 0)
+                {
+                    foreach (DataTable dt in listDt)
+                    {
+                        if (dt != null && dt.Rows.Count > 0)
+                        {
+                            doc.MailMerge.ExecuteWithRegions(dt);
+                        }
+                    }
+                }
+
+                //合并模版,相当于页面的渲染
+                doc.MailMerge.Execute(new[] { "PageCount" }, new object[] { doc.PageCount });
+                //保存合并后的文档
+                doc.Save(outputFileName);
+                return outputFileName; //返回下载地址
+            }
+            catch (Exception er)
+            {
+                return er.Message;
+            }
+        }
+
+        #endregion
+
     }
 }

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

@@ -120,7 +120,9 @@ namespace OASystem.Domain.AutoMappers
             #region 客户公司资料板块
             CreateMap<OperationClientCompanyDto, Crm_CustomerCompany>();
             #endregion
-
+            #region 客户资料板块
+            CreateMap<DeleClient, Crm_DeleClient>();
+            #endregion
             #endregion
 
             #region Business

+ 572 - 2
OASystem/OASystem.Domain/Dtos/CRM/DeleClientAddDto.cs

@@ -1,18 +1,584 @@
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
 namespace OASystem.Domain.Dtos.CRM
 {
+    public class DeleClientOpDto
+    {
+        /// <summary>
+        /// 操作状态
+        /// 1 添加 
+        /// 2 修改 
+        /// </summary>
+        public int Status { get; set; }
+        /// <summary>
+        /// 客户资料信息
+        /// </summary>
+        public DeleClient DeleClient { get; set; }
+        public List<CustomerFamily> CustomerFamily { get; set; }
+    } 
     /// <summary>
-    /// 签证客户添加
+    /// 客户资料修改
     /// </summary>
-    public class DeleClientAddDto
+    public class DeleClient
     {
+        
+        public int MyProperty { get; set; }
+        /// <summary>
+        /// 编号
+        /// </summary>
+        public int Id { get; set; }
+        /// <summary>
+        /// 中文姓名
+        /// </summary>
+
+        public string LastName { get; set; }
+        /// <summary>
+        /// 英文姓名
+        /// </summary>
+       
+        public string FirstName { get; set; }
+        /// <summary>
+        /// 曾用名
+        /// </summary>
+       
+        public string OldName { get; set; }
+        /// <summary>
+        /// 名字拼音
+        /// </summary>
+       
+        public string Pinyin { get; set; }
+        /// <summary>
+        /// 性别 0男1女
+        /// </summary>
+        
+        public int Sex { get; set; }
+        /// <summary>
+        /// 婚姻状况 0、1、2、3、4 (未设置、未婚、已婚、离异、丧偶)
+        /// </summary>
+        
+        public int Marriage { get; set; }
+        /// <summary>
+        /// 客户手机号
+        /// </summary>
+        
+        public string Phone { get; set; }
+        /// <summary>
+        /// 出生省份
+        /// </summary>
+       
+        public string BirthProvince { get; set; }
+        /// <summary>
+        /// 出生城市
+        /// </summary>
+       
+        public string BirthCity { get; set; }
+        /// <summary>
+        /// 出生日期
+        /// </summary>
+       
+        public string BirthDay { get; set; }
+
+        /// <summary>
+        /// 机票喜好舱位
+        /// </summary>
+       
+        public string AirType { get; set; }
+        /// <summary>
+        /// 是否靠窗
+        /// </summary>
+        
+        public int SeatPref { get; set; }
+        /// <summary>
+        /// 机票备注
+        /// </summary>
+       
+        public string AirRemark { get; set; }
+        /// <summary>
+        /// 酒店喜好房型
+        /// </summary>
+       
+        public string RoomType { get; set; }
+        /// <summary>
+        /// 酒店需求
+        /// </summary>
+       
+        public string RoomPref { get; set; }
+
+        /// <summary>
+        /// 家庭联系方式
+        /// </summary>
+        
+        public string Tel { get; set; }
+        /// <summary>
+        /// 客户电子邮件
+        /// </summary>
+       
+        public string Email { get; set; }
+        /// <summary>
+        /// 住址
+        /// </summary>
+       
+        public string Address { get; set; }
+        /// <summary>
+        /// 最高学历
+        /// </summary>
+        
+        public string HighestEducation { get; set; }
+        /// <summary>
+        /// 邮编
+        /// </summary>
+       
+        public string PostCodes { get; set; }
+
+        /// <summary>
+        /// 客户公司Id
+        /// </summary>
+        
+        public int CrmCompanyId { get; set; }
+
+        /// <summary>
+        /// 职位
+        /// </summary>
+       
+        public string Job { get; set; }
+        /// <summary>
+        /// 本人工作内容
+        /// </summary>
+       
+        public string WorkState { get; set; }
+        /// <summary>
+        /// 入职时间
+        /// </summary>
+       
+        public string WorkDate { get; set; }
+        /// <summary>
+        /// 薪资
+        /// </summary>
+        
+        public string Wage { get; set; }
+        /// <summary>
+        /// (单位/部门)电话
+        /// </summary>
+        
+        public string ClientPhone { get; set; }
+        /// <summary>
+        /// (单位/部门)传真
+        /// </summary>
+       
+        public string ClientFax { get; set; }
+        /// <summary>
+        /// (单位/部门)邮箱
+        /// </summary>
+       
+        public string ClientEmail { get; set; }
+        /// <summary>
+        /// (单位/部门)负责人姓名
+        /// </summary>
+        
+        public string ClientLeader { get; set; }
+        /// <summary>
+        /// (单位/部门)负责人职务
+        /// </summary>
+        
+        public string ClientLeaderJob { get; set; }
+        /// <summary>
+        /// 是否有获批的申根签证 
+        /// 0否1是
+        /// </summary>
+        
+        public int IsGetSchengen { get; set; }
+        /// <summary>
+        /// 申根有效期
+        /// </summary>
+       
+        public DateTime StartTime { get; set; }
+        /// <summary>
+        /// 申根有效期
+        /// </summary>
+       
+        public DateTime EndTime { get; set; }
+        /// <summary>
+        /// 申根是否在使馆有指纹记录 
+        /// 0否1是
+        /// </summary>
+        
+        public int IsFinger { get; set; }
+        /// <summary>
+        /// 申根指纹录入时间
+        /// </summary>
+       
+        public DateTime FingerDate { get; set; }
+        /// <summary>
+        /// 是否因公去过美国/加拿大
+        /// 0否1是
+        /// </summary>
+        
+        public int IsVisitUC { get; set; }
+        /// <summary>
+        /// 美国抵达日期
+        /// </summary>
+       
+        public DateTime USADate { get; set; }
+        /// <summary>
+        /// 美国停留天数
+        /// </summary>
+        
+        public int USADays { get; set; }
+        /// <summary>
+        /// 加拿大抵达日期
+        /// </summary>
+       
+        public DateTime CanDate { get; set; }
+        /// <summary>
+        /// 加拿大停留天数
+        /// </summary>
+        
+        public int CanDays { get; set; }
+        /// <summary>
+        /// 是否曾获得过因公美国签证 0否1是
+        /// </summary>
+        
+        public int IsUSAVia { get; set; }
+        /// <summary>
+        /// 因公美国签证最近获得时间
+        /// 0否1是
+        /// </summary>
+       
+        public DateTime GetUSAVisaDate { get; set; }
+        /// <summary>
+        /// 因公美国签证地点
+        /// </summary>
+       
+        public string GetUPPlace { get; set; }
+        /// <summary>
+        /// 因公美国签证种类
+        /// </summary>
+       
+        public string USAVisaCate { get; set; }
+        /// <summary>
+        /// 因公美国签证编码
+        /// </summary>
+       
+        public string USAVisaCode { get; set; }
+        /// <summary>
+        /// 是否在使馆留过十指的指纹 0否1是
+        /// </summary>
+        
+        public int USAFinger { get; set; }
+        /// <summary>
+        /// 是否曾经被拒签 0否1是
+        /// </summary>
+        
+        public int IsRejected { get; set; }
+        /// <summary>
+        /// 被拒时间
+        /// </summary>
+       
+        public DateTime RejectedDate { get; set; }
+        /// <summary>
+        /// 被拒地点
+        /// </summary>
+       
+        public string RejectedPlace { get; set; }
+        /// <summary>
+        /// 被拒签证种类
+        /// </summary>
+       
+        public string RejectedVisa { get; set; }
+        /// <summary>
+        /// 美国签证是否被吊销过 0否1是
+        /// </summary>
+        
+        public int IsRevoke { get; set; }
+        /// <summary>
+        /// 护照是否曾经丢失 0否1是
+        /// </summary>
+        
+        public int IsLose { get; set; }
+        /// <summary>
+        /// 丢失护照时间
+        /// </summary>
+       
+        public DateTime LoseDate { get; set; }
+        /// <summary>
+        /// 丢失护照编号
+        /// </summary>
+       
+        public string LoseCode { get; set; }
+        /// <summary>
+        /// 丢失的护照是否有美国签证 0否1是
+        /// </summary>
+        
+        public int IsUSAVisa { get; set; }
+        /// <summary>
+        /// 夫/妻是否已在美国 
+        /// 0否1是
+        /// </summary>
+        
+        public int MateUSA { get; set; }
+        /// <summary>
+        /// 夫/妻身份
+        /// </summary>
+       
+        public string MateIden { get; set; }
+        /// <summary>
+        /// 未婚夫/妻是否已在美国 0否1是
+        /// </summary>
+        
+        public int WHUSA { get; set; }
+        /// <summary>
+        /// 未婚夫/妻身份
+        /// </summary>
+       
+        public string WHIden { get; set; }
+        /// <summary>
+        /// 父/母是否已在美国
+        /// 0否1是
+        /// </summary>
+        
+        public int ParentUSA { get; set; }
+        /// <summary>
+        /// 父/母身份
+        /// </summary>
+       
+        public string ParentIden { get; set; }
+        /// <summary>
+        /// 子/女是否已在美国 0否1是
+        /// </summary>
+        
+        public int ChildUSA { get; set; }
+        /// <summary>
+        /// 子/女身份
+        /// </summary>
+       
+        public string ChildIden { get; set; }
+        /// <summary>
+        /// 兄弟/姐妹是否已在美国 0否1是
+        /// </summary>
+        
+        public int BroUSA { get; set; }
+        /// <summary>
+        /// 兄弟/姐妹身份
+        /// </summary>
+       
+        public string BroIden { get; set; }
+        /// <summary>
+        /// 所属/捐助/工作过的职业协会、社会团体和慈善机构
+        /// </summary>
+       
+        public string Social { get; set; }
+        /// <summary> 
+        /// 是否参军  
+        /// 0否1是
+        /// </summary>
+        
+        public int IsArmy { get; set; }
+        /// <summary>
+        /// 参军详情
+        /// </summary>
+       
+        public string ArmyState { get; set; }
+        /// <summary>
+        /// 在外期间费用承担人
+        /// </summary>
+        
+        public string CostBearers { get; set; }
+        /// <summary>
+        /// 填表经办人
+        /// </summary>
+        
+        public string TableOpName { get; set; }
+        /// <summary>
+        /// 填表经办人联系电话
+        /// </summary>
+        
+        public string TableOpTel { get; set; }
+        /// <summary>
+        /// 填表日期
+        /// </summary>
+       
+        public DateTime TableDate { get; set; }
+        /// <summary>
+        /// 所属党派或宗教
+        /// </summary>
+       
+        public string Party { get; set; }
+        /// <summary>
+        /// 国籍
+        /// </summary>
+        
+        public string Nationality { get; set; }
+        /// <summary>
+        /// 结婚日期
+        /// </summary>
+       
+        public DateTime WeddingDate { get; set; }
+        /// <summary>
+        /// 离婚日期
+        /// </summary>
+       
+        public DateTime DivorceDate { get; set; }
+        /// <summary>
+        /// 配偶姓名
+        /// </summary>
+       
+        public string MateName { get; set; }
+        /// <summary>
+        /// 配偶出生日期
+        /// </summary>
+       
+        public DateTime MateBirthDay { get; set; }
+        /// <summary>
+        /// 配偶出生城市
+        /// </summary>
+       
+        public string MateBirthCity { get; set; }
+        /// <summary>
+        /// 配偶出生国家省份
+        /// </summary>
+       
+        public string MateBirthCountry { get; set; }
+        /// <summary>
+        /// 配偶住址
+        /// </summary>
+       
+        public string MateAddress { get; set; }
+        /// <summary>
+        /// 配偶工作单位
+        /// </summary>
+       
+        public string MateClient { get; set; }
+        /// <summary>
+        /// 配偶工作单位地址
+        /// </summary>
+       
+        public string MateClientAddress { get; set; }
+        /// <summary>
+        /// 配偶职务
+        /// </summary>
+       
+        public string MateJob { get; set; }
+        /// <summary>
+        /// 因公出访国家
+        /// </summary>
+       
+        public string VisitCountry { get; set; }
+        /// <summary>
+        /// 发表的期刊/论文
+        /// </summary>
+       
+        public string Paper { get; set; }
+        /// <summary>
+        /// 专利
+        /// </summary>
+       
+        public string Papent { get; set; }
+        /// <summary>
+        /// 发表的博士论文
+        /// </summary>
+       
+        public string PhD { get; set; }
+
+       
+        /// <summary>
+        /// 创建者Id
+        /// </summary>
+        public int CreateUserId { get; set; }
+       
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+    
     }
 
+    /// <summary>
+    /// 家庭成员资料修改
+    /// </summary>
+    public class CustomerFamily
+    {
+        /// <summary>
+        /// 编号
+        /// </summary>
+        public int Id { get; set; }
+        /// <summary>
+        /// 客户表ID
+        /// </summary>
+        public int DcId { get; set; }
+        /// <summary>
+        /// 家庭成员称谓
+        /// SetData = 40  签证客户家人称谓  读取时使用 
+        /// 存储时 存储name
+        /// </summary>
+        public string Appellation { get; set; }
+        /// <summary>
+        /// 家庭成员姓名
+        /// </summary>
+        public string Name { get; set; }
+        /// <summary>
+        /// 家庭成员出生日期
+        /// </summary>
+        public DateTime BirthDay { get; set; }
+        /// <summary>
+        /// 家庭成员出生地
+        /// </summary>
+        public string BirthPlace { get; set; }
+        /// <summary>
+        /// 家庭成员政治面貌
+        /// </summary>
+        public string Politics { get; set; }
+        /// <summary>
+        /// 家庭成员工作单位
+        /// </summary>
+        public string Client { get; set; }
+        /// <summary>
+        /// 家庭地址
+        /// </summary>
+        public string Address { get; set; }
+        /// <summary>
+        /// 是否欧盟公民 0否1是
+        /// </summary>
+        public int IsEu { get; set; }
+        /// <summary>
+        /// 拥有欧盟、欧洲经济区或瑞士公民身份的家庭成员姓名
+        /// </summary>
+        public string NameSnd { get; set; }
+        /// <summary>
+        /// 拥有欧盟、欧洲经济区或瑞士公民身份的家庭成员生日
+        /// </summary>
+        public DateTime BirthDaySnd { get; set; }
+        /// <summary>
+        /// 拥有欧盟、欧洲经济区或瑞士公民身份的家庭成员国籍
+        /// </summary>
+        public string Nationality { get; set; }
+        /// <summary>
+        /// 拥有欧盟、欧洲经济区或瑞士公民身份的家庭成员旅行证件编号或身份证号码
+        /// </summary>
+        public string IDCard { get; set; }
+        /// <summary>
+        /// 拥有欧盟、欧洲经济区或瑞士公民身份的家庭成员与申请人的关系
+        /// </summary>
+        public string Reletionship { get; set; }
+        /// <summary>
+        /// 家庭成员是否在美国
+        /// </summary>
+        public int IsUSA { get; set; }
+        
+        /// <summary>
+        /// 创建者Id
+        /// </summary>
+        public int CreateUserId { get; set; }
+        
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+    }
     public class SetCrmUpdPassIdCardOCRDto
     {
         public int UserId { get; set; }
@@ -29,4 +595,8 @@ namespace OASystem.Domain.Dtos.CRM
 
         public DateTime ExpiryDt { get; set; }
     }
+    public class CustomerDto
+    {
+        public int Id { get; set; }
+    }
 }

+ 2 - 2
OASystem/OASystem.Domain/Entities/Customer/Crm_CustomerCert.cs

@@ -21,7 +21,7 @@ namespace OASystem.Domain.Entities.Customer
         /// 证件类型表Id
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public string SdId { get; set; }
+        public int SdId { get; set; }
         /// <summary>
         /// 证件号
         /// </summary>
@@ -54,7 +54,7 @@ namespace OASystem.Domain.Entities.Customer
         /// 有效期截止时间
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
-        public string ExpiryDt { get; set; }
+        public DateTime ExpiryDt { get; set; }
 
         /// <summary>
         /// 身份证户籍地址

+ 7 - 7
OASystem/OASystem.Domain/Entities/Customer/Crm_DeleClient.cs

@@ -43,7 +43,7 @@ namespace OASystem.Domain.Entities.Customer
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int Marriage { get; set; }
-
+        /// <summary>
         /// 客户手机号
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(20)")]
@@ -91,7 +91,7 @@ namespace OASystem.Domain.Entities.Customer
         public string RoomPref { get; set; }
        
         /// <summary>
-        /// 客户联系方式
+        /// 家庭联系方式
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(20)")]
         public string Tel { get; set; }
@@ -120,7 +120,7 @@ namespace OASystem.Domain.Entities.Customer
         /// 客户公司Id
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public string CrmCompanyId { get; set; }
+        public int CrmCompanyId { get; set; }
 
         /// <summary>
         /// 职位
@@ -332,7 +332,7 @@ namespace OASystem.Domain.Entities.Customer
         /// 子/女是否已在美国 0否1是
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public string ChildUSA { get; set; }
+        public int ChildUSA { get; set; }
         /// <summary>
         /// 子/女身份
         /// </summary>
@@ -342,7 +342,7 @@ namespace OASystem.Domain.Entities.Customer
         /// 兄弟/姐妹是否已在美国 0否1是
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public string BroUSA { get; set; }
+        public int BroUSA { get; set; }
         /// <summary>
         /// 兄弟/姐妹身份
         /// </summary>
@@ -358,7 +358,7 @@ namespace OASystem.Domain.Entities.Customer
         /// 0否1是
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public string IsArmy { get; set; }
+        public int IsArmy { get; set; }
         /// <summary>
         /// 参军详情
         /// </summary>
@@ -390,7 +390,7 @@ namespace OASystem.Domain.Entities.Customer
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string Party { get; set; }
         /// <summary>
-        /// 家庭成员国籍
+        /// 国籍
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(20)")]
         public string Nationality { get; set; }

+ 163 - 5
OASystem/OASystem.Infrastructure/Repositories/CRM/VisaDeleClientRepository.cs

@@ -1,9 +1,12 @@
-using OASystem.Domain;
+
+using AutoMapper;
+using OASystem.Domain;
 using OASystem.Domain.Dtos;
 using OASystem.Domain.Dtos.CRM;
 using OASystem.Domain.Dtos.UserDto;
 using OASystem.Domain.Entities.Customer;
 using OASystem.Domain.Entities.Groups;
+using OASystem.Domain.Entities.Resource;
 using OASystem.Domain.ViewModels.CRM;
 using OASystem.Domain.ViewModels.Groups;
 using System;
@@ -19,9 +22,12 @@ namespace OASystem.Infrastructure.Repositories.CRM
     /// </summary>
     public class VisaDeleClientRepository : BaseRepository<Crm_DeleClient, VisaDeleClientView>
     {
-        public VisaDeleClientRepository(SqlSugarClient sqlSugar) :
+        private readonly IMapper _mapper;
+        public VisaDeleClientRepository(SqlSugarClient sqlSugar,IMapper mapper) :
             base(sqlSugar)
-        { }
+        {
+            _mapper = mapper;
+        }
 
         /// <summary>
         /// 签证客户list
@@ -107,12 +113,12 @@ namespace OASystem.Infrastructure.Repositories.CRM
                 int cerdAdd = await _sqlSugar.Insertable<Crm_CustomerCert>(new Crm_CustomerCert
                 {
                     DcId = clientInfo.Id,
-                    SdId = "773",
+                    SdId = 773,
                     Country = "中国",
                     CertNo = client.CerdNo,
                     TargetCountry = "",
                     IssueDt = new DateTime(1990, 1, 1),
-                    ExpiryDt = "1990-01-01 00:00:00.000",
+                    ExpiryDt = new DateTime(1990, 1, 1),
                     CreateUserId = client.UserId,
                     CreateTime = DateTime.Now,
                     DeleteUserId = null,
@@ -139,5 +145,157 @@ namespace OASystem.Infrastructure.Repositories.CRM
             
             return false;
         }
+
+        public async Task<Result> OpCustomer(DeleClientOpDto dto)
+        {
+           Result result = new Result() { Code = -2, Msg = "未知错误" };
+            try
+            {
+                if (dto.Status==1)//添加
+                {
+                    string selectSql = string.Format(@"select * from Crm_DeleClient where  LastName+FirstName='{0}' and Phone='{1}' and IsDel='{2}'"
+                                                      , dto.DeleClient.LastName+dto.DeleClient.FirstName, dto.DeleClient.Phone, 0);
+                    var DeleClient = await _sqlSugar.SqlQueryable<Crm_DeleClient>(selectSql).FirstAsync();//查询是否存在
+                    if (DeleClient != null)
+                    {
+                        return result = new Result() { Code = -1, Msg = "该客户已存在,请勿重复添加!" };
+
+                    }
+                    else//不存在,可添加
+                    {
+                        Crm_DeleClient _CountryFeeCost = _mapper.Map<Crm_DeleClient>(dto.DeleClient);
+                        int id = await AddAsyncReturnId(_CountryFeeCost);
+                        if (id == 0)
+                        {
+                            return result = new Result() { Code = -1, Msg = "添加失败!" };
+
+                        }
+
+                        return result = new Result() { Code = 0, Msg = "添加成功!", Data = new { Id = id } };
+                        //进行其他表炒作
+                    }
+                }
+                else if (dto.Status == 2)//修改
+                {
+                    bool res = await UpdateAsync(a => a.Id == dto.DeleClient.Id, a => new Crm_DeleClient
+                    {
+                        LastName = dto.DeleClient.LastName,
+                        FirstName = dto.DeleClient.FirstName,
+                        OldName = dto.DeleClient.OldName,
+                        Pinyin = dto.DeleClient.Pinyin,
+                        Sex = dto.DeleClient.Sex,
+                        Marriage = dto.DeleClient.Marriage,
+                        Phone = dto.DeleClient.Phone,
+                        BirthProvince = dto.DeleClient.BirthProvince,
+                        BirthCity = dto.DeleClient.BirthCity,
+                        BirthDay = dto.DeleClient.BirthDay,
+                        AirType = dto.DeleClient.AirType,
+                        SeatPref = dto.DeleClient.SeatPref,
+                        AirRemark = dto.DeleClient.AirRemark,
+                        RoomType = dto.DeleClient.RoomType,
+                        RoomPref = dto.DeleClient.RoomPref,
+                        Tel = dto.DeleClient.Tel,
+                        Email = dto.DeleClient.Email,
+                        Address = dto.DeleClient.Address,
+                        HighestEducation = dto.DeleClient.HighestEducation,
+                        PostCodes = dto.DeleClient.PostCodes,
+                        CrmCompanyId = dto.DeleClient.CrmCompanyId,
+                        Job = dto.DeleClient.Job,
+                        WorkState = dto.DeleClient.WorkState,
+                        WorkDate = dto.DeleClient.WorkDate,
+                        Wage = dto.DeleClient.Wage,
+                        ClientPhone = dto.DeleClient.ClientPhone,
+                        ClientFax = dto.DeleClient.ClientFax,
+                        ClientEmail = dto.DeleClient.ClientEmail,
+                        ClientLeader = dto.DeleClient.ClientLeader,
+                        ClientLeaderJob = dto.DeleClient.ClientLeaderJob,
+                        IsGetSchengen = dto.DeleClient.IsGetSchengen,
+                        StartTime = dto.DeleClient.StartTime,
+                        EndTime = dto.DeleClient.EndTime,
+                        IsFinger = dto.DeleClient.IsFinger,
+                        FingerDate = dto.DeleClient.FingerDate,
+                        IsVisitUC = dto.DeleClient.IsVisitUC,
+                        USADate = dto.DeleClient.USADate,
+                        USADays = dto.DeleClient.USADays,
+                        CanDate = dto.DeleClient.CanDate,
+                        CanDays = dto.DeleClient.CanDays,
+                        IsUSAVia = dto.DeleClient.IsUSAVia,
+                        GetUSAVisaDate = dto.DeleClient.GetUSAVisaDate,
+                        GetUPPlace = dto.DeleClient.GetUPPlace,
+                        USAVisaCate = dto.DeleClient.USAVisaCate,
+                        USAVisaCode = dto.DeleClient.USAVisaCode,
+                        USAFinger = dto.DeleClient.USAFinger,
+                        IsRejected = dto.DeleClient.IsRejected,
+                        RejectedDate = dto.DeleClient.RejectedDate,
+                        RejectedPlace = dto.DeleClient.RejectedPlace,
+                        RejectedVisa = dto.DeleClient.RejectedVisa,
+                        IsRevoke = dto.DeleClient.IsRevoke,
+                        IsLose = dto.DeleClient.IsLose,
+                        LoseDate = dto.DeleClient.LoseDate,
+                        LoseCode = dto.DeleClient.LoseCode,
+                        IsUSAVisa = dto.DeleClient.IsUSAVisa,
+                        MateUSA = dto.DeleClient.MateUSA,
+                        MateIden = dto.DeleClient.MateIden,
+                        WHUSA = dto.DeleClient.WHUSA,
+                        WHIden = dto.DeleClient.WHIden,
+                        ParentUSA = dto.DeleClient.ParentUSA,
+                        ParentIden = dto.DeleClient.ParentIden,
+                        ChildUSA = dto.DeleClient.ChildUSA,
+                        ChildIden = dto.DeleClient.ChildIden,
+                        BroUSA = dto.DeleClient.BroUSA,
+                        BroIden = dto.DeleClient.BroIden,
+                        Social = dto.DeleClient.Social,
+                        IsArmy = dto.DeleClient.IsArmy,
+                        ArmyState = dto.DeleClient.ArmyState,
+                        CostBearers = dto.DeleClient.CostBearers,
+                        TableOpName = dto.DeleClient.TableOpName,
+                        TableOpTel = dto.DeleClient.TableOpTel,
+                        TableDate = dto.DeleClient.TableDate,
+                        Party = dto.DeleClient.Party,
+                        Nationality = dto.DeleClient.Nationality,
+                        WeddingDate = dto.DeleClient.WeddingDate,
+                        DivorceDate = dto.DeleClient.DivorceDate,
+                        MateName = dto.DeleClient.MateName,
+                        MateBirthDay = dto.DeleClient.MateBirthDay,
+                        MateBirthCity = dto.DeleClient.MateBirthCity,
+                        MateBirthCountry = dto.DeleClient.MateBirthCountry,
+                        MateAddress = dto.DeleClient.MateAddress,
+                        MateClient = dto.DeleClient.MateClient,
+                        MateClientAddress = dto.DeleClient.MateClientAddress,
+                        MateJob = dto.DeleClient.MateJob,
+                        VisitCountry = dto.DeleClient.VisitCountry,
+                        Paper = dto.DeleClient.Paper,
+                        Papent = dto.DeleClient.Papent,
+                        PhD = dto.DeleClient.PhD,
+                        CreateUserId = dto.DeleClient.CreateUserId,
+                        Remark = dto.DeleClient.Remark,
+                    });
+                    if (!res)
+                    {
+                        return result = new Result() { Code = -1, Msg = "修改失败!" };
+                    }
+                    foreach (var item in dto.CustomerFamily)
+                    {
+                        if (item.Id!=0)//修改
+                        {
+
+                        }
+                        else//添加
+                        {
+                            
+                        }
+                    }
+                   return  result = new Result() { Code = 0, Msg = "修改成功!" };
+                    //进行其他表操作
+                }
+                
+            }
+            catch (Exception)
+            {
+                return result = new Result() { Code = -2, Msg = "程序错误!" };
+                throw;
+            }
+            return result;
+        }
     }
 }

+ 2 - 2
OASystem/OASystem.Infrastructure/Repositories/Resource/HotelDataRepository.cs

@@ -43,7 +43,7 @@ namespace OASystem.Infrastructure.Repositories.Resource
                             return result = new Result() { Code = -1, Msg = "添加失败!" };
 
                         }
-                        result = new Result() { Code = 0, Msg = "添加成功!", Data = new { Id = id } };
+                        return result = new Result() { Code = 0, Msg = "添加成功!", Data = new { Id = id } };
                     }
                 }
                 else if (dto.Status == 2)//修改
@@ -65,7 +65,7 @@ namespace OASystem.Infrastructure.Repositories.Resource
                     {
                         return result = new Result() { Code = -1, Msg = "修改失败!" };
                     }
-                    result = new Result() { Code = 0, Msg = "修改成功!" };
+                    return result = new Result() { Code = 0, Msg = "修改成功!" };
                 }
                 else
                 {

+ 30 - 10
OASystem/OASystem.Infrastructure/Repositories/System/SystemMenuPermissionRepository.cs

@@ -79,12 +79,12 @@ namespace OASystem.Infrastructure.Repositories.System
                       d.IosUrl
                       from Sys_UserAuthority a inner join Sys_PageFunctionPermission b on a.FId = b.Id 
                       inner join Sys_SystemMenuPermission d on a.SmId = d.Id inner join Sys_SetData c on c.Id = d.Mid
-                      where uid = {uid} and b.Id = 1 and a.IsDel= 0  and b.IsDel = 0 
+                      where uid = {uid} and a.IsDel= 0  and b.IsDel = 0 
                       and b.IsEnable = 1 and c.IsDel = 0 and d.IsDel = 0   ";
 
                 if (PortType == 1)
                 {
-                    sql += $@"   and d.IsEnable = 1  group by 
+                    sql += $@" and b.Id = 1 and d.IsEnable = 1  group by 
                       a.UId,a.SmId,b.Id,b.FunctionName,b.FunctionCode,c.Id,
                       c.Name,c.STid,d.Id,d.Name,d.SystemMenuCode,d.webUrl,d.AndroidUrl,d.icon,
                       d.IosUrl";
@@ -92,7 +92,7 @@ namespace OASystem.Infrastructure.Repositories.System
                 }
                 else if (PortType == 2)
                 {
-                    sql += $@"  and d.phoneIsEnable = 1 group by 
+                    sql += $@" and d.phoneIsEnable = 1 group by 
                       a.UId,a.SmId,b.Id,b.FunctionName,b.FunctionCode,c.Id,
                       c.Name,c.STid,d.Id,d.Name,d.SystemMenuCode,d.webUrl,d.AndroidUrl,d.icon,
                       d.IosUrl ";
@@ -116,20 +116,40 @@ namespace OASystem.Infrastructure.Repositories.System
                             var modul = item.FirstOrDefault();
                             if (modul != null)
                             {
-                                arr.Add(new
+                                if (modul.modulName.Contains("主页"))
                                 {
-                                    modulName = modul.modulName,
-                                    modulid = modul.modulid,
-                                    pageList = item
-                                });
+                                    arr.Insert(0, new
+                                    {
+                                        modulName = modul.modulName,
+                                        modulid = modul.modulid,
+                                        pageList = item
+                                    });
+                                }
+                                else
+                                {
+                                    arr.Add(new
+                                    {
+                                        modulName = modul.modulName,
+                                        modulid = modul.modulid,
+                                        pageList = item
+                                    });
+                                }
                             }
                         }
 
                     }
                     else if (PortType == 2)
                     {
-                        var pages = DBData.Select(x => x.pageid).ToArray();
-                        arr = ArrayList.Adapter(pages);
+                        var AndMenu = DBData.GroupBy(x => x.SmId).ToList();
+
+                        foreach (var item in AndMenu)
+                        {
+                            arr.Add(new
+                            {
+                                pageid = item.Key,
+                                opList = item.Select(x=>x.Funid).ToList(),
+                            });
+                        }           
                     }
 
                     result.Data = arr;

+ 1 - 1
OASystem/_Doc/OA2023数据字典.docx

@@ -692,7 +692,7 @@ Null
                                  字段约束
                                  字段描述
                                     备注
-CompanyId
+crmCompanyId
 Int
 Null