username@email.com
2023-03-08 f7a2d28869cc31c7dbe057a1d80dd40536d97fed
zhengcaioa/Services/CooperatecustomCustomerService.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using AutoMapper;
using CommonToolsCore;
using DTO;
using IServices;
using Microsoft.AspNetCore.Mvc.Rendering;
@@ -16,10 +17,12 @@
    {
        private readonly zhengcaioaContext _context;
        private readonly IMapper _mapper;
        public CooperatecustomCustomerService(zhengcaioaContext context, IMapper mapper)
        private readonly zcUserInfoN_dbContext _zcUserInfoNcontext;
        public CooperatecustomCustomerService(zhengcaioaContext context, IMapper mapper, zcUserInfoN_dbContext zcUserInfoNcontext)
        {
            _context = context;
            _mapper = mapper;
            _zcUserInfoNcontext = zcUserInfoNcontext;
        }
        public ResultEntity save(CooperatecustomCustomerDTO cooperatecustomCustomerDTO)
@@ -52,12 +55,43 @@
                if (String.IsNullOrEmpty(cooperatecustomCustomer.Id))
                {
                    if (!string.IsNullOrEmpty(cooperatecustomCustomer.Ywjl))
                    {
                        cooperatecustomCustomer.Ywjltime = DateTime.Now;
                        var Cooper = _context.CooperatecustomCustomers.Count(x => x.RecStatus == "A" && x.Ywjl == cooperatecustomCustomer.Ywjl);
                        var Inten = _context.IntentionCustomers.Count(x => x.RecStatus == "A" && x.Ywjl == cooperatecustomCustomer.Ywjl);
                        if (Cooper + Inten > 2000)
                        {
                            resultEntity.Result = false;
                            resultEntity.Message = "该业务经理,客户单位和合作客户合计超过2000!";
                            return resultEntity;
                        }
                    }
                    cooperatecustomCustomer.Id = Guid.NewGuid().ToString();
                    _context.CooperatecustomCustomers.Add(cooperatecustomCustomer);
                }
                else
                {
                    var updateproject = _context.CooperatecustomCustomers.Find(cooperatecustomCustomer.Id);
                    if (!string.IsNullOrEmpty(cooperatecustomCustomer.Ywjl) && (string.IsNullOrEmpty(updateproject.Ywjl) || !string.IsNullOrEmpty(updateproject.Ywjl) && cooperatecustomCustomer.Ywjl != updateproject.Ywjl))
                    {
                        updateproject.Ywjltime = DateTime.Now;
                        var Cooper = _context.CooperatecustomCustomers.Count(x => x.RecStatus == "A" && x.Ywjl == cooperatecustomCustomer.Ywjl);
                        var Inten = _context.IntentionCustomers.Count(x => x.RecStatus == "A" && x.Ywjl == cooperatecustomCustomer.Ywjl);
                        if (Cooper + Inten >= 2000)
                        {
                            resultEntity.Result = false;
                            resultEntity.Message = "该业务经理,客户单位和合作客户合计超过2000!";
                            return resultEntity;
                        }
                    }
                    if (string.IsNullOrEmpty(cooperatecustomCustomer.Ywjl))
                    {
                        updateproject.Ywjltime = DateTime.Now;
                    }
                    updateproject.Sheng = cooperatecustomCustomer.Sheng;
                    updateproject.City = cooperatecustomCustomer.City;
@@ -94,11 +128,55 @@
                    updateproject.Modifier = cooperatecustomCustomer.Modifier;
                    updateproject.Modifytime = cooperatecustomCustomer.Modifytime;
                    updateproject.Weixin = cooperatecustomCustomer.Weixin;
                    updateproject.HuiyuanId = cooperatecustomCustomer.HuiyuanId;
                    if (!string.IsNullOrEmpty(cooperatecustomCustomer.HuiyuanId))
                    {
                        updateproject.HuiyuanId = cooperatecustomCustomer.HuiyuanId;
                    }
                    updateproject.Shifoutianjiaweixin = cooperatecustomCustomer.Shifoutianjiaweixin;
                    updateproject.Weixintime = cooperatecustomCustomer.Weixintime;
                    updateproject.Weixiner = cooperatecustomCustomer.Weixiner;
                    updateproject.Shouxinedu = cooperatecustomCustomer.Shouxinedu;
                    updateproject.Taocanjianshu = cooperatecustomCustomer.Taocanjianshu;
                }
                _context.SaveChanges();
                var listPosition = _context.CooperatecustomCustomers.Where(r => r.RecStatus == "A").ToList();
               var  CooperatecustomCustomerDTOs = _mapper.Map<List<CooperatecustomCustomerDTO>>(listPosition);
                CacheHelperNetCore.CacheInsert("CooperatecustomCustomerDTOs", CooperatecustomCustomerDTOs);
                resultEntity.ReturnID = cooperatecustomCustomer.Id;
                resultEntity.Result = true;
            }
            catch (Exception ex)
            {
                resultEntity.Result = false;
                resultEntity.Message = "保存失败,请联系管理员";
            }
            return resultEntity;
        }
        public ResultEntity saveyufukuan(CooperatecustomCustomerDTO cooperatecustomCustomerDTO)
        {
            ResultEntity resultEntity = new ResultEntity();
            try
            {
                var cooperatecustomCustomer = _mapper.Map<CooperatecustomCustomer>(cooperatecustomCustomerDTO);
                    var updateproject = _context.CooperatecustomCustomers.Find(cooperatecustomCustomer.Id);
                    updateproject.Yufukuan = cooperatecustomCustomer.Yufukuan;
                    updateproject.Shenyushouxin = cooperatecustomCustomer.Shenyushouxin;
                    updateproject.Shouxinedu = cooperatecustomCustomer.Shouxinedu;
                _context.SaveChanges();
                resultEntity.ReturnID = cooperatecustomCustomer.Id;
@@ -117,7 +195,7 @@
        {
            var entity = _context.CooperatecustomCustomers.Find(id);
            if(entity.RecStatus != "A")
            if(entity == null || entity.RecStatus != "A")
            {
                entity = new CooperatecustomCustomer();
            }
@@ -168,32 +246,59 @@
                DateTime.TryParse(Createtimes[1], out Createtimeend);
                Createtimeend = Createtimeend.AddDays(1);
            }
            var query = (from a in _context.CooperatecustomCustomers
                         join b in listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "khly")
                         on a.Khly equals b.CodeSn
                         into bsss
                         from bbb in bsss.DefaultIfEmpty()
                         join c in listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "hyfl")
                         on a.Hyfl equals c.CodeSn
                          into csss
                         from ccc in csss.DefaultIfEmpty()
                         join d in listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "khlx")
                        on a.Khlx equals d.CodeSn
                         into dsss
                         from ddd in dsss.DefaultIfEmpty()
                         join e in _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A" && x.IsYwjl == "A")
                         on a.Ywjl equals e.Id
                         into esss
                         from abi in esss.DefaultIfEmpty()
                         join i in _context.CooperOrders.Where(x => x.RecStatus == "A" &&  x.ChedanStatus !="A" ).GroupBy(q => new { q.Khdw }).Select(q => new
                         join i in _context.CooperOrders.Where(x => x.RecStatus == "A" && x.ChedanStatus != "A").GroupBy(q => new { q.Khdw }).Select(q => new
                         {
                             Khdw = q.Key.Khdw,
                             Moneycount = q.Sum(i => i.Money),
                             Ordercount = q.Count(),
                         }
                         }
                         )
                         on a.Id equals i.Khdw
                         into isss
                         from iii in isss.DefaultIfEmpty()
                         join f in _context.Areas on a.Sheng equals f.CodeId
                            into fsss
                         from fff in fsss.DefaultIfEmpty()
                         join g in _context.Areas on a.City equals g.CodeId
                            into gsss
                         from ggg in gsss.DefaultIfEmpty()
                         join h in _context.Areas on a.AreaId equals h.CodeId
                            into hsss
                         from hhh in hsss.DefaultIfEmpty()
                         where a.RecStatus == "A"
                          && (string.IsNullOrWhiteSpace(searchEntity.Createtime) || (a.Createtime >= Createtimestart && a.Createtime <= Createtimeend))
@@ -201,11 +306,11 @@
                          && (string.IsNullOrWhiteSpace(searchEntity.Khly) || a.Khly == searchEntity.Khly.Trim())
                           && (string.IsNullOrWhiteSpace(searchEntity.Hyfl) || a.Hyfl == searchEntity.Hyfl.Trim())
                            && (string.IsNullOrWhiteSpace(searchEntity.Khlx) || a.Khlx == searchEntity.Khlx.Trim())
                             && (string.IsNullOrWhiteSpace(searchEntity.Ywjl) || a.Ywjl == searchEntity.Ywjl.Trim())
                             //&& (string.IsNullOrWhiteSpace(searchEntity.Ywjl) || a.Ywjl == searchEntity.Ywjl.Trim())
                              && (string.IsNullOrWhiteSpace(searchEntity.Sheng) || a.Sheng == searchEntity.Sheng.Trim())
                               && (string.IsNullOrWhiteSpace(searchEntity.City) || a.City == searchEntity.City.Trim())
                                && (string.IsNullOrWhiteSpace(searchEntity.AreaId) || a.AreaId == searchEntity.AreaId.Trim())
                                 && (string.IsNullOrWhiteSpace(searchEntity.Shifouweixin) || (searchEntity.Shifouweixin == "A" && a.Weixin != null) || (searchEntity.Shifouweixin != "A" && a.Weixin == null) )
                                 && (string.IsNullOrWhiteSpace(searchEntity.Shifouweixin) || a.Shifoutianjiaweixin == searchEntity.Shifouweixin.Trim())
                                 && (string.IsNullOrWhiteSpace(searchEntity.HuiyuanId) || a.HuiyuanId == searchEntity.HuiyuanId.Trim())
                         select new CooperatecustomCustomerDTO
@@ -218,12 +323,12 @@
                             Hyfl = a.Hyfl,
                             Khlx = a.Khlx,
                             Ywjl = a.Ywjl,
                             ShengName = f.Name + "-" + g.Name+ "-" + h.Name,
                             CityName = g.Name,
                             AreaIdName = h.Name,
                             KhlyName = b.Comments,
                             HyflName = c.Comments,
                             KhlxName = d.Comments,
                             ShengName = fff.Name + "-" + ggg.Name + "-" + hhh.Name,
                             CityName = ggg.Name,
                             AreaIdName = hhh.Name,
                             KhlyName = bbb.Comments,
                             HyflName = ccc.Comments,
                             KhlxName = ddd.Comments,
                             YwjlName = abi.UserName,
                             Name = a.Name,
                             Postal = a.Postal,
@@ -232,6 +337,7 @@
                             Tel = a.Tel,
                             Ordercount = iii.Ordercount.ToString(),
                             Moneycount = iii.Moneycount.ToString(),
                             Moneycountde = iii.Moneycount,
                             Phone = a.Phone,
                             Qq = a.Qq,
                             Email = a.Email,
@@ -259,14 +365,98 @@
                             HuiyuanId = a.HuiyuanId,
                             Weixiner = a.Weixiner,
                             Weixintime = a.Weixintime,
                             Yufukuan = a.Yufukuan ?? 0,
                             Shouxinedu = a.Shouxinedu ?? 0,
                             Shenyushouxin = a.Shenyushouxin ?? 0,
                             YufukuanName = a.Yufukuan.HasValue ? a.Yufukuan.Value.ToString("f2") : "",
                             ShouxineduName = a.Shouxinedu.HasValue ? a.Shouxinedu.Value.ToString("f2") : "",
                             ShenyushouxinName = a.Shenyushouxin.HasValue ? a.Shenyushouxin.Value.ToString("f2") : "",
                             Taocanjianshu = a.Taocanjianshu ?? 0,
                             Customertype = "合作客户",
                         }
                        ).OrderByDescending(x => x.Modifytime).ToList();
                        );
            if (!string.IsNullOrWhiteSpace(searchEntity.Ywjl))
            {
                if (searchEntity.Ywjl != "11111")
                {
                    query = query.Where(a => a.Ywjl == searchEntity.Ywjl.Trim());
                }
                else
                {
                    query = query.Where(a => a.Ywjl == null);
                }
            }
            if (searchEntity.totalrows == 0)
                searchEntity.totalrows = query.Count();
            var lianlist = query.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
            //if (searchEntity.totalrows == 0)
            searchEntity.totalrows = query.Count();
            data.Heji1 = Math.Round(query.Sum(x => x.Yufukuan) ?? 0, 2);
            data.Heji2 = Math.Round(query.Sum(x => x.Shouxinedu) ?? 0, 2);
            data.Heji3 = Math.Round(query.Sum(x => x.Shenyushouxin) ?? 0, 2);
            data.Heji4 = Math.Round(query.Sum(x => x.Moneycountde) ?? 0, 2);
            var lianlist = query.OrderByDescending(x => x.Modifytime).Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
            data.DangyeHeji1 = Math.Round(lianlist.Sum(x => x.Yufukuan) ?? 0, 2);
            data.DangyeHeji2 = Math.Round(lianlist.Sum(x => x.Shouxinedu) ?? 0, 2);
            data.DangyeHeji3 = Math.Round(lianlist.Sum(x => x.Shenyushouxin) ?? 0, 2);
            data.DangyeHeji4 = Math.Round(lianlist.Sum(x => x.Moneycountde) ?? 0, 2);
            if(lianlist!=null&& lianlist.Count > 0)
            {
                var members = _context.FiMembers.ToList();
                foreach (var cooperatecustomCustomerDTO in lianlist)
                {
                    cooperatecustomCustomerDTO.Hezuoyewu = "";
                    var cooperOrders = _context.CooperOrders.Where(x => x.RecStatus == "A" && x.ShouliStatus != "0" && x.OrderType == "05" && x.Khdw == cooperatecustomCustomerDTO.Id).ToList();
                    foreach (var cooperOrder  in cooperOrders)
                    {
                      var member =  members.Where(x => x.Id == cooperOrder.OrderType1).FirstOrDefault();
                        if (member != null)
                        {
                            if (cooperatecustomCustomerDTO.Hezuoyewu.IndexOf(member.MemberType) < 0)
                            {
                                cooperatecustomCustomerDTO.Hezuoyewu += member.MemberType + " | ";
                            }
                        }
                    }
                    if (!string.IsNullOrEmpty(cooperatecustomCustomerDTO.HuiyuanId))
                    {
                       var  huiyuanid = new Guid(cooperatecustomCustomerDTO.HuiyuanId);
                        var frameworkRoles = (from a in _zcUserInfoNcontext.OderOfVips
                                   join b in _zcUserInfoNcontext.FrameworkRoles on a.RoleId equals b.Id
                                   where a.IsPayEnd == true && a.IsUserDell == false &&  a.UserId == huiyuanid
                                   select b
                                 ).ToList();
                        foreach (var frameworkRole in frameworkRoles)
                        {
                                if (cooperatecustomCustomerDTO.Hezuoyewu.IndexOf(frameworkRole.RoleName) < 0)
                                {
                                    cooperatecustomCustomerDTO.Hezuoyewu += frameworkRole.RoleName + " | ";
                                }
                        }
                    }
                    if (cooperatecustomCustomerDTO.Hezuoyewu.IndexOf("常年政采&法律顾问") >=0)
                    {
                        cooperatecustomCustomerDTO.Hezuoyewu += "采购公告权限 | ";
                    }
                    cooperatecustomCustomerDTO.Guanliankehushu = _context.CustomerGuanlians.Count(x => x.CustomerId == cooperatecustomCustomerDTO.Id);
                }
            }
            data.LoadData(searchEntity, lianlist);
            return data;
        }
@@ -303,14 +493,46 @@
        /// 获取所有有效合作客户
        /// </summary>
        /// <returns></returns>
        public List<CooperatecustomCustomerDTO> GetList()
        public List<CooperatecustomCustomerDTO> GetList(string HuiyuanId = "", string Name = "")
        {
            List<CooperatecustomCustomerDTO> CooperatecustomCustomerDTOs = (List<CooperatecustomCustomerDTO>)CacheHelperNetCore.CacheValue("CooperatecustomCustomerDTOs");
            if (CooperatecustomCustomerDTOs != null && CooperatecustomCustomerDTOs.Count > 0)
            {
                if (!string.IsNullOrEmpty(HuiyuanId))
                {
                    CooperatecustomCustomerDTOs = CooperatecustomCustomerDTOs.Where(x => x.HuiyuanId == HuiyuanId).ToList();
                }
                if (!string.IsNullOrEmpty(Name))
                {
                    CooperatecustomCustomerDTOs = CooperatecustomCustomerDTOs.Where(x => x.Name == Name).ToList();
                }
                return CooperatecustomCustomerDTOs;
            }
            var listPosition = _context.CooperatecustomCustomers.Where(r => r.RecStatus == "A").ToList();
            var list = _mapper.Map<List<CooperatecustomCustomerDTO>>(listPosition);
            return list;
            CooperatecustomCustomerDTOs = _mapper.Map<List<CooperatecustomCustomerDTO>>(listPosition);
            CacheHelperNetCore.CacheInsert("CooperatecustomCustomerDTOs", CooperatecustomCustomerDTOs);
            if (!string.IsNullOrEmpty(HuiyuanId))
            {
                CooperatecustomCustomerDTOs = CooperatecustomCustomerDTOs.Where(x => x.HuiyuanId == HuiyuanId).ToList();
            }
            if (!string.IsNullOrEmpty(Name))
            {
                CooperatecustomCustomerDTOs = CooperatecustomCustomerDTOs.Where(x => x.Name == Name).ToList();
            }
            return CooperatecustomCustomerDTOs;
        }
        public List<CooperatecustomCustomerDTO> GetListsalary(string userid, DateTime datemin, DateTime datemax)
@@ -328,7 +550,7 @@
            var listPosition =( from a in _context.CooperatecustomCustomers.Where(r => r.RecStatus == "A" && r.Creater == userid)
                                join b in _context.CooperOrders.Where(x => x.RecStatus == "A" && x.Shoulitime >= datemin && x.Shoulitime < datemax)
                                join b in _context.CooperOrders.Where(x => x.RecStatus == "A" && x.Createtime >= datemin && x.Createtime < datemax)
                                on a.Id equals b.Khdw 
                                select a
@@ -337,5 +559,481 @@
            var list = _mapper.Map<List<CooperatecustomCustomerDTO>>(listPosition);
            return list;
        }
        public List<CooperatecustomCustomerDTO> GetListsalaryweixin(string userid, DateTime datemin, DateTime datemax)
        {
            var listPosition = _context.CooperatecustomCustomers.Where(r => r.RecStatus == "A" && r.Weixiner == userid && r.Weixintime >= datemin && r.Weixintime < datemax).ToList();
            var list = _mapper.Map<List<CooperatecustomCustomerDTO>>(listPosition);
            return list;
        }
        public ResultEntity saveCustomerGuanlian(CustomerGuanlianDTO DTO)
        {
            ResultEntity resultEntity = new ResultEntity();
            resultEntity.Result = false;
            var customerGuanlian = _mapper.Map<CustomerGuanlian>(DTO);
            if (String.IsNullOrEmpty(customerGuanlian.Id))
            {
                customerGuanlian.Id = Guid.NewGuid().ToString();
                DTO.Id = customerGuanlian.Id;
                _context.CustomerGuanlians.Add(customerGuanlian);
                CustomerGuanlian customerGuanlian1 = new CustomerGuanlian();
                customerGuanlian1.Id = Guid.NewGuid().ToString();
                customerGuanlian1.CustomerId = customerGuanlian.SecCustomerId;
                customerGuanlian1.Customertype = customerGuanlian.SecCustomertype;
                customerGuanlian1.SecCustomerId = customerGuanlian.CustomerId;
                customerGuanlian1.SecCustomertype = customerGuanlian.Customertype;
                _context.CustomerGuanlians.Add(customerGuanlian1);
            }
            _context.SaveChanges();
            resultEntity.ReturnID = customerGuanlian.Id;
            resultEntity.Result = true;
            return resultEntity;
        }
        public CustomerGuanlianDTO GetCustomerGuanlian(string CustomerId, string SecCustomerId)
        {
            var entity = _context.CustomerGuanlians.Where(x=>x.CustomerId == CustomerId && x.SecCustomerId == SecCustomerId).FirstOrDefault();
            if (entity == null)
            {
                entity = new CustomerGuanlian();
            }
            var customerGuanlianDTO = _mapper.Map<CustomerGuanlianDTO>(entity);
            return customerGuanlianDTO;
        }
        public ResultEntity DeleteCustomerGuanlian(string CustomerId, string SecCustomerId)
        {
            ResultEntity resultEntity = new ResultEntity();
            resultEntity.Result = false;
            var entity = _context.CustomerGuanlians.Where(x => x.CustomerId == CustomerId && x.SecCustomerId == SecCustomerId).FirstOrDefault();
            if (entity != null)
            {
                var entity1 = _context.CustomerGuanlians.Where(x => x.CustomerId == entity.SecCustomerId && x.SecCustomerId == entity.CustomerId).FirstOrDefault();
                _context.CustomerGuanlians.Remove(entity);
                if (entity1 != null)
                {
                    _context.CustomerGuanlians.Remove(entity1);
                }
            }
            _context.SaveChanges();
            resultEntity.ReturnID = CustomerId;
            resultEntity.Result = true;
            return resultEntity;
        }
        public List<CooperatecustomCustomerDTO> GetListCustomerGuanlian(string CustomerId)
        {
            var customerGuanlians = _context.CustomerGuanlians.Where(x=>x.CustomerId == CustomerId).ToList();
            List <CooperatecustomCustomerDTO> cooperatecustomCustomerDTOs = new List<CooperatecustomCustomerDTO>();
            if (customerGuanlians!=null && customerGuanlians.Count > 0)
            {
              var hezuokehu  =  customerGuanlians/*.Where(x => x.SecCustomertype == "合作客户")*/.Select(x => x.SecCustomerId).ToArray();
                if(hezuokehu!=null&& hezuokehu.Length > 0)
                {
                    var cooperatecustomCustomers = _context.CooperatecustomCustomers.Where(x => x.RecStatus == "A" && hezuokehu.Contains(x.Id)).ToList();
                    var cooperatecustomCustomerDTOssss = _mapper.Map<List<CooperatecustomCustomerDTO>>(cooperatecustomCustomers);
                    foreach(var cooperatecustomCustomerDTO  in cooperatecustomCustomerDTOssss)
                    {
                        cooperatecustomCustomerDTO.Customertype = "合作客户";
                        cooperatecustomCustomerDTOs.Add(cooperatecustomCustomerDTO);
                    }
                }
                //var dangankehu = customerGuanlians.Where(x => x.SecCustomertype == "档案客户").Select(x => x.SecCustomerId).ToArray();
                if (hezuokehu != null && hezuokehu.Length > 0)
                {
                    var intentionCustomers = _context.IntentionCustomers.Where(x => x.RecStatus == "A" && hezuokehu.Contains(x.Id)).ToList();
                    var cooperatecustomCustomerDTOssss = _mapper.Map<List<CooperatecustomCustomerDTO>>(intentionCustomers);
                    foreach (var cooperatecustomCustomerDTO in cooperatecustomCustomerDTOssss)
                    {
                        cooperatecustomCustomerDTO.Customertype = "档案客户";
                        cooperatecustomCustomerDTOs.Add(cooperatecustomCustomerDTO);
                    }
                }
            }
            return cooperatecustomCustomerDTOs;
        }
        public ResultDataEntity<CooperatecustomCustomerDTO> SearchByPagingAll(CooperatecustomCustomerDTOSearch searchEntity)
        {
            ResultDataEntity<CooperatecustomCustomerDTO> data = new ResultDataEntity<CooperatecustomCustomerDTO>();
            List<CooperatecustomCustomerDTO> list = new List<CooperatecustomCustomerDTO>();
            var listCode = (from a in _context.SysCodeDtls
                            join b in _context.SysCodes
                            on a.CodeId equals b.Id
                            where a.RecStatus == "A"
                                          && b.RecStatus == "A"
                            select new CodeDataEntity()
                            {
                                CodeId = b.Id,
                                CodeTable = b.CodeTable,
                                CodeField = b.CodeField,
                                CodeSn = a.CodeSn,
                                Comments = a.Comments,
                                Contents = a.Contents,
                                RecStatus = a.RecStatus,
                                Sort = a.Sort
                            }
                      );
            DateTime Createtimestart = DateTime.Now;
            DateTime Createtimeend = DateTime.Now;
            if (!string.IsNullOrWhiteSpace(searchEntity.Createtime))
            {
                string[] Createtimes = searchEntity.Createtime.Split("|");
                DateTime.TryParse(Createtimes[0], out Createtimestart);
                DateTime.TryParse(Createtimes[1], out Createtimeend);
                Createtimeend = Createtimeend.AddDays(1);
            }
            var query = (from a in _context.CooperatecustomCustomers
                         join b in listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "khly")
                         on a.Khly equals b.CodeSn
                         into bsss
                         from bbb in bsss.DefaultIfEmpty()
                         join c in listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "hyfl")
                         on a.Hyfl equals c.CodeSn
                          into csss
                         from ccc in csss.DefaultIfEmpty()
                         join d in listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "khlx")
                        on a.Khlx equals d.CodeSn
                         into dsss
                         from ddd in dsss.DefaultIfEmpty()
                         join e in _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A" && x.IsYwjl == "A")
                         on a.Ywjl equals e.Id
                         into esss
                         from abi in esss.DefaultIfEmpty()
                         join i in _context.CooperOrders.Where(x => x.RecStatus == "A" && x.ChedanStatus != "A").GroupBy(q => new { q.Khdw }).Select(q => new
                         {
                             Khdw = q.Key.Khdw,
                             Moneycount = q.Sum(i => i.Money),
                             Ordercount = q.Count(),
                         }
                         )
                         on a.Id equals i.Khdw
                         into isss
                         from iii in isss.DefaultIfEmpty()
                         join f in _context.Areas on a.Sheng equals f.CodeId
                            into fsss
                         from fff in fsss.DefaultIfEmpty()
                         join g in _context.Areas on a.City equals g.CodeId
                            into gsss
                         from ggg in gsss.DefaultIfEmpty()
                         join h in _context.Areas on a.AreaId equals h.CodeId
                            into hsss
                         from hhh in hsss.DefaultIfEmpty()
                         where a.RecStatus == "A"
                          && (string.IsNullOrWhiteSpace(searchEntity.Createtime) || (a.Createtime >= Createtimestart && a.Createtime <= Createtimeend))
                         && (string.IsNullOrWhiteSpace(searchEntity.Name) || a.Name.Contains(searchEntity.Name.Trim()))
                          && (string.IsNullOrWhiteSpace(searchEntity.Khly) || a.Khly == searchEntity.Khly.Trim())
                           && (string.IsNullOrWhiteSpace(searchEntity.Hyfl) || a.Hyfl == searchEntity.Hyfl.Trim())
                            && (string.IsNullOrWhiteSpace(searchEntity.Khlx) || a.Khlx == searchEntity.Khlx.Trim())
                              //&& (string.IsNullOrWhiteSpace(searchEntity.Ywjl) || a.Ywjl == searchEntity.Ywjl.Trim())
                              && (string.IsNullOrWhiteSpace(searchEntity.Sheng) || a.Sheng == searchEntity.Sheng.Trim())
                               && (string.IsNullOrWhiteSpace(searchEntity.City) || a.City == searchEntity.City.Trim())
                                && (string.IsNullOrWhiteSpace(searchEntity.AreaId) || a.AreaId == searchEntity.AreaId.Trim())
                                 && (string.IsNullOrWhiteSpace(searchEntity.Shifouweixin) || a.Shifoutianjiaweixin == searchEntity.Shifouweixin.Trim())
                                 && (string.IsNullOrWhiteSpace(searchEntity.HuiyuanId) || a.HuiyuanId == searchEntity.HuiyuanId.Trim())
                         select new CooperatecustomCustomerDTO
                         {
                             Id = a.Id,
                             Sheng = a.Sheng,
                             City = a.City,
                             AreaId = a.AreaId,
                             Khly = a.Khly,
                             Hyfl = a.Hyfl,
                             Khlx = a.Khlx,
                             Ywjl = a.Ywjl,
                             ShengName = fff.Name + "-" + ggg.Name + "-" + hhh.Name,
                             CityName = ggg.Name,
                             AreaIdName = hhh.Name,
                             KhlyName = bbb.Comments,
                             HyflName = ccc.Comments,
                             KhlxName = ddd.Comments,
                             YwjlName = abi.UserName,
                             Name = a.Name,
                             Postal = a.Postal,
                             Address = a.Address,
                             Url = a.Url,
                             Tel = a.Tel,
                             Ordercount = iii.Ordercount.ToString(),
                             Moneycount = iii.Moneycount.ToString(),
                             Moneycountde = iii.Moneycount,
                             Phone = a.Phone,
                             Qq = a.Qq,
                             Email = a.Email,
                             FName = a.FName,
                             FTel = a.FTel,
                             FQq = a.FQq,
                             YwName = a.YwName,
                             YwTel = a.YwTel,
                             YwQq = a.YwQq,
                             JgCode = a.JgCode,
                             Khh = a.Khh,
                             Count = a.Count,
                             ShrName = a.ShrName,
                             ShrTel = a.ShrTel,
                             ShrAddress = a.ShrAddress,
                             Remark = a.Remark,
                             RecStatus = a.RecStatus,
                             Modifier = a.Modifier,
                             Modifytime = a.Modifytime,
                             CreatetimeName = a.Createtime.ToString("yyyy-MM-dd"),
                             Weixin = a.Weixin,
                             Shifoutianjiaweixin = a.Shifoutianjiaweixin,
                             HuiyuanId = a.HuiyuanId,
                             Weixiner = a.Weixiner,
                             Weixintime = a.Weixintime,
                             Yufukuan = a.Yufukuan ?? 0,
                             Shouxinedu = a.Shouxinedu ?? 0,
                             Shenyushouxin = a.Shenyushouxin ?? 0,
                             YufukuanName = a.Yufukuan.HasValue ? a.Yufukuan.Value.ToString("f2") : "",
                             ShouxineduName = a.Shouxinedu.HasValue ? a.Shouxinedu.Value.ToString("f2") : "",
                             ShenyushouxinName = a.Shenyushouxin.HasValue ? a.Shenyushouxin.Value.ToString("f2") : "",
                             Taocanjianshu = a.Taocanjianshu ?? 0,
                             Customertype = "合作客户",
                         }
                        );
            if (!string.IsNullOrWhiteSpace(searchEntity.Ywjl))
            {
                if (searchEntity.Ywjl != "11111")
                {
                    query = query.Where(a => a.Ywjl == searchEntity.Ywjl.Trim());
                }
                else
                {
                    query = query.Where(a => a.Ywjl == null);
                }
            }
            var queryinter = (from a in _context.IntentionCustomers
                         join b in listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "khly")
                         on a.Khly equals b.CodeSn
                         into bsss
                         from bbb in bsss.DefaultIfEmpty()
                         join c in listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "hyfl")
                         on a.Hyfl equals c.CodeSn
                          into csss
                         from ccc in csss.DefaultIfEmpty()
                         join d in listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "khlx")
                        on a.Khlx equals d.CodeSn
                         into dsss
                         from ddd in dsss.DefaultIfEmpty()
                         join e in _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A" && x.IsYwjl == "A")
                         on a.Ywjl equals e.Id
                         into esss
                         from abi in esss.DefaultIfEmpty()
                         join i in _context.CooperOrders.Where(x => x.RecStatus == "A" && x.ChedanStatus != "A").GroupBy(q => new { q.Khdw }).Select(q => new
                         {
                             Khdw = q.Key.Khdw,
                             Moneycount = q.Sum(i => i.Money),
                             Ordercount = q.Count(),
                         }
                         )
                         on a.Id equals i.Khdw
                         into isss
                         from iii in isss.DefaultIfEmpty()
                         join f in _context.Areas on a.Sheng equals f.CodeId
                            into fsss
                         from fff in fsss.DefaultIfEmpty()
                         join g in _context.Areas on a.City equals g.CodeId
                            into gsss
                         from ggg in gsss.DefaultIfEmpty()
                         join h in _context.Areas on a.AreaId equals h.CodeId
                            into hsss
                         from hhh in hsss.DefaultIfEmpty()
                         where a.RecStatus == "A"
                          && (string.IsNullOrWhiteSpace(searchEntity.Createtime) || (a.Createtime >= Createtimestart && a.Createtime <= Createtimeend))
                         && (string.IsNullOrWhiteSpace(searchEntity.Name) || a.Name.Contains(searchEntity.Name.Trim()))
                          && (string.IsNullOrWhiteSpace(searchEntity.Khly) || a.Khly == searchEntity.Khly.Trim())
                           && (string.IsNullOrWhiteSpace(searchEntity.Hyfl) || a.Hyfl == searchEntity.Hyfl.Trim())
                            && (string.IsNullOrWhiteSpace(searchEntity.Khlx) || a.Khlx == searchEntity.Khlx.Trim())
                              //&& (string.IsNullOrWhiteSpace(searchEntity.Ywjl) || a.Ywjl == searchEntity.Ywjl.Trim())
                              && (string.IsNullOrWhiteSpace(searchEntity.Sheng) || a.Sheng == searchEntity.Sheng.Trim())
                               && (string.IsNullOrWhiteSpace(searchEntity.City) || a.City == searchEntity.City.Trim())
                                && (string.IsNullOrWhiteSpace(searchEntity.AreaId) || a.AreaId == searchEntity.AreaId.Trim())
                                 && (string.IsNullOrWhiteSpace(searchEntity.Shifouweixin) || a.Shifoutianjiaweixin == searchEntity.Shifouweixin.Trim())
                                 && (string.IsNullOrWhiteSpace(searchEntity.HuiyuanId) || a.HuiyuanId == searchEntity.HuiyuanId.Trim())
                         select new CooperatecustomCustomerDTO
                         {
                             Id = a.Id,
                             Sheng = a.Sheng,
                             City = a.City,
                             AreaId = a.AreaId,
                             Khly = a.Khly,
                             Hyfl = a.Hyfl,
                             Khlx = a.Khlx,
                             Ywjl = a.Ywjl,
                             ShengName = fff.Name + "-" + ggg.Name + "-" + hhh.Name,
                             CityName = ggg.Name,
                             AreaIdName = hhh.Name,
                             KhlyName = bbb.Comments,
                             HyflName = ccc.Comments,
                             KhlxName = ddd.Comments,
                             YwjlName = abi.UserName,
                             Name = a.Name,
                             Postal = a.Postal,
                             Address = a.Address,
                             Url = a.Url,
                             Tel = a.Tel,
                             Ordercount = iii.Ordercount.ToString(),
                             Moneycount = iii.Moneycount.ToString(),
                             Moneycountde = iii.Moneycount,
                             Phone = a.Phone,
                             Qq = a.Qq,
                             Email = a.Email,
                             FName = a.FName,
                             FTel = a.FTel,
                             FQq = a.FQq,
                             YwName = a.YwName,
                             YwTel = a.YwTel,
                             YwQq = a.YwQq,
                             JgCode = a.JgCode,
                             Khh = a.Khh,
                             Count = a.Count,
                             ShrName = a.ShrName,
                             ShrTel = a.ShrTel,
                             ShrAddress = a.ShrAddress,
                             Remark = a.Remark,
                             RecStatus = a.RecStatus,
                             Modifier = a.Modifier,
                             Modifytime = a.Modifytime,
                             CreatetimeName = a.Createtime.ToString("yyyy-MM-dd"),
                             Weixin = a.Weixin,
                             Shifoutianjiaweixin = a.Shifoutianjiaweixin,
                             HuiyuanId = a.HuiyuanId,
                             Weixiner = a.Weixiner,
                             Weixintime = a.Weixintime,
                             Customertype = "档案客户",
                         }
                      );
            if (!string.IsNullOrWhiteSpace(searchEntity.Ywjl))
            {
                if (searchEntity.Ywjl != "11111")
                {
                    queryinter = queryinter.Where(a => a.Ywjl == searchEntity.Ywjl.Trim());
                }
                else
                {
                    queryinter = queryinter.Where(a => a.Ywjl == null);
                }
            }
            var chaxun    = query.ToList().Union(queryinter.ToList());
            searchEntity.totalrows = chaxun.Count();
            var lianlist = chaxun.OrderByDescending(x => x.Modifytime).Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
            data.LoadData(searchEntity, lianlist);
            return data;
        }
        public ResultEntity saveKhlx(CooperatecustomCustomerDTO cooperatecustomCustomerDTO)
        {
            ResultEntity resultEntity = new ResultEntity();
            try
            {
                    var updateproject = _context.CooperatecustomCustomers.Find(cooperatecustomCustomerDTO.Id);
                    updateproject.Khlx = cooperatecustomCustomerDTO.Khlx;
                    updateproject.Modifier = cooperatecustomCustomerDTO.Modifier;
                    updateproject.Modifytime = cooperatecustomCustomerDTO.Modifytime;
                _context.SaveChanges();
                resultEntity.ReturnID = cooperatecustomCustomerDTO.Id;
                resultEntity.Result = true;
            }
            catch (Exception ex)
            {
                resultEntity.Result = false;
                resultEntity.Message = "保存失败,请联系管理员";
            }
            return resultEntity;
        }
    }
}