using System; using System.Collections.Generic; using System.Linq; using System.Text; using AutoMapper; using CommonToolsCore; using DTO; using DTO.zcUserInfoN_db; using IServices; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.EntityFrameworkCore; using zhengcaioa.Models; namespace Services { public class CooperatecustomCustomerService: ICooperatecustomCustomerService { private readonly zhengcaioaContext _context; private readonly 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) { ResultEntity resultEntity = new ResultEntity(); try { var checkUserSn = _context.CooperatecustomCustomers.Where(x => x.Name == cooperatecustomCustomerDTO.Name && x.RecStatus == "A" && x.Id != cooperatecustomCustomerDTO.Id).FirstOrDefault(); if (checkUserSn != null && (string.IsNullOrWhiteSpace(cooperatecustomCustomerDTO.Id) || (!string.IsNullOrWhiteSpace(cooperatecustomCustomerDTO.Id) && checkUserSn.Id != cooperatecustomCustomerDTO.Id))) { resultEntity.Result = false; resultEntity.Message = "客户单位重复"; return resultEntity; } if(!cooperatecustomCustomerDTO.zhuanyi && string.IsNullOrWhiteSpace(cooperatecustomCustomerDTO.Id)) { var checkyixiang = _context.IntentionCustomers.Where(x => x.Name == cooperatecustomCustomerDTO.Name && x.RecStatus == "A").FirstOrDefault(); if (checkyixiang != null) { resultEntity.Result = false; resultEntity.Message = "已存在意向客户,请转移客户!"; return resultEntity; } } var cooperatecustomCustomer = _mapper.Map(cooperatecustomCustomerDTO); 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(); cooperatecustomCustomerDTO.Id = cooperatecustomCustomer.Id; _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; updateproject.AreaId = cooperatecustomCustomer.AreaId; updateproject.Khly = cooperatecustomCustomer.Khly; updateproject.Hyfl = cooperatecustomCustomer.Hyfl; updateproject.Khlx = cooperatecustomCustomer.Khlx; updateproject.Ywjl = cooperatecustomCustomer.Ywjl; updateproject.Name = cooperatecustomCustomer.Name; updateproject.Postal = cooperatecustomCustomer.Postal; updateproject.Address = cooperatecustomCustomer.Address; updateproject.Url = cooperatecustomCustomer.Url; updateproject.Tel = cooperatecustomCustomer.Tel; updateproject.Phone = cooperatecustomCustomer.Phone; updateproject.Qq = cooperatecustomCustomer.Qq; updateproject.Email = cooperatecustomCustomer.Email; updateproject.FName = cooperatecustomCustomer.FName; updateproject.FTel = cooperatecustomCustomer.FTel; updateproject.FQq = cooperatecustomCustomer.FQq; updateproject.YwName = cooperatecustomCustomer.YwName; updateproject.YwTel = cooperatecustomCustomer.YwTel; updateproject.YwQq = cooperatecustomCustomer.YwQq; updateproject.JgCode = cooperatecustomCustomer.JgCode; updateproject.Khh = cooperatecustomCustomer.Khh; updateproject.Count = cooperatecustomCustomer.Count; updateproject.ShrName = cooperatecustomCustomer.ShrName; updateproject.ShrTel = cooperatecustomCustomer.ShrTel; updateproject.ShrAddress = cooperatecustomCustomer.ShrAddress; updateproject.Remark = cooperatecustomCustomer.Remark; updateproject.RecStatus = cooperatecustomCustomer.RecStatus; updateproject.Modifier = cooperatecustomCustomer.Modifier; updateproject.Modifytime = cooperatecustomCustomer.Modifytime; updateproject.Weixin = cooperatecustomCustomer.Weixin; 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>(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(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; resultEntity.Result = true; } catch (Exception ex) { resultEntity.Result = false; resultEntity.Message = "保存失败,请联系管理员"; } return resultEntity; } public CooperatecustomCustomerDTO Get(string id) { var entity = _context.CooperatecustomCustomers.Find(id); if(entity == null || entity.RecStatus != "A") { entity = new CooperatecustomCustomer(); } var cooperatecustomCustomerDTO = _mapper.Map(entity); return cooperatecustomCustomerDTO; } public ResultDataEntity SearchByPaging(CooperatecustomCustomerDTOSearch searchEntity) { ResultDataEntity data = new ResultDataEntity(); List list = new List(); 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); } } //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; } /// /// 修改主表状态 /// /// 主id /// 用户 /// public ResultEntity ModifyStatus(string id, string userid) { ResultEntity result = new ResultEntity(); result.Result = true; var model = _context.CooperatecustomCustomers.Find(id); if (model != null) { model.RecStatus = "D"; model.Modifier = userid; model.Modifytime = DateTime.Now; _context.SaveChanges(); } return result; } /// /// 获取所有有效合作客户 /// /// public List GetList(string HuiyuanId = "", string Name = "") { List CooperatecustomCustomerDTOs = (List)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(); CooperatecustomCustomerDTOs = _mapper.Map>(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 GetListsalary(string userid, DateTime datemin, DateTime datemax) { var listPosition = _context.CooperatecustomCustomers.Where(r => r.RecStatus == "A" && r.Creater == userid && r.Createtime >= datemin && r.Createtime < datemax).ToList(); var list = _mapper.Map>(listPosition); return list; } public List GetListsalaryqiandan(string userid, DateTime datemin, DateTime datemax) { 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.Createtime >= datemin && x.Createtime < datemax) on a.Id equals b.Khdw select a ).Distinct().ToList(); var list = _mapper.Map>(listPosition); return list; } public List 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>(listPosition); return list; } public ResultEntity saveCustomerGuanlian(CustomerGuanlianDTO DTO) { ResultEntity resultEntity = new ResultEntity(); resultEntity.Result = false; var customerGuanlian = _mapper.Map(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(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 GetListCustomerGuanlian(string CustomerId) { var customerGuanlians = _context.CustomerGuanlians.Where(x=>x.CustomerId == CustomerId).ToList(); List cooperatecustomCustomerDTOs = new List(); 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>(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>(intentionCustomers); foreach (var cooperatecustomCustomerDTO in cooperatecustomCustomerDTOssss) { cooperatecustomCustomerDTO.Customertype = "档案客户"; cooperatecustomCustomerDTOs.Add(cooperatecustomCustomerDTO); } } } return cooperatecustomCustomerDTOs; } public ResultDataEntity SearchByPagingAll(CooperatecustomCustomerDTOSearch searchEntity) { ResultDataEntity data = new ResultDataEntity(); List list = new List(); 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 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, 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 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, 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(); if(lianlist!=null&& lianlist.Count > 0) { var khlys= listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "khly").ToList(); var hyfls = listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "hyfl").ToList(); var khlxs = listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "khlx").ToList(); var pltUsers = _context.PltUsers.ToList(); var areas = _context.Areas.ToList(); var yx = listCode.Where(x => x.CodeTable == "CooperVisit" && x.CodeField == "yx").ToList(); foreach (var cooperatecustomCustomerDTO in lianlist) { var khly = khlys.Where(x=>x.CodeSn == cooperatecustomCustomerDTO.Khly).FirstOrDefault(); if (khly != null) { cooperatecustomCustomerDTO.KhlyName = khly.Comments; } var hyfl = hyfls.Where(x => x.CodeSn == cooperatecustomCustomerDTO.Hyfl).FirstOrDefault(); if (hyfl != null) { cooperatecustomCustomerDTO.HyflName = hyfl.Comments; } var khlx = khlxs.Where(x => x.CodeSn == cooperatecustomCustomerDTO.Khlx).FirstOrDefault(); if (khlx != null) { cooperatecustomCustomerDTO.KhlxName = khlx.Comments; } var ywjl = pltUsers.Where(x => x.Id == cooperatecustomCustomerDTO.Ywjl).FirstOrDefault(); if (ywjl != null) { cooperatecustomCustomerDTO.YwjlName = ywjl.UserName; } var city = areas.Where(x => x.CodeId == cooperatecustomCustomerDTO.City).FirstOrDefault(); if (city != null) { cooperatecustomCustomerDTO.CityName = city.Name; } var areaId = areas.Where(x => x.CodeId == cooperatecustomCustomerDTO.AreaId).FirstOrDefault(); if (areaId != null) { cooperatecustomCustomerDTO.AreaIdName = areaId.Name; } var sheng = areas.Where(x => x.CodeId == cooperatecustomCustomerDTO.Sheng).FirstOrDefault(); if (sheng != null) { cooperatecustomCustomerDTO.ShengName = sheng.Name + "-" + cooperatecustomCustomerDTO.CityName + "-" + cooperatecustomCustomerDTO.AreaIdName; } if (cooperatecustomCustomerDTO.Customertype == "合作客户") { var kehuyx = _context.CooperVisits.Where(x => x.RecStatus == "A" && x.Viscustomer == cooperatecustomCustomerDTO.Id).OrderByDescending(x => x.Vistime).FirstOrDefault(); if (kehuyx != null) { cooperatecustomCustomerDTO.Yx = kehuyx.Yx; var yxname = yx.Where(x => x.CodeSn == kehuyx.Yx).FirstOrDefault(); if (yxname != null) { cooperatecustomCustomerDTO.YxName = yxname.Comments; } } } else { var kehuyx = _context.IntentionVisits.Where(x => x.RecStatus == "A" && x.Viscustomer == cooperatecustomCustomerDTO.Id).OrderByDescending(x => x.Vistime).FirstOrDefault(); if (kehuyx != null) { cooperatecustomCustomerDTO.Yx = kehuyx.Yx; var yxname = yx.Where(x => x.CodeSn == kehuyx.Yx).FirstOrDefault(); if (yxname != null) { cooperatecustomCustomerDTO.YxName = yxname.Comments; } } } } } 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; } public ResultDataEntity SearchByPagingGuanlianHuiyuan(FrameworkUserSearch searchEntity) { ResultDataEntity data = new ResultDataEntity(); 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 _zcUserInfoNcontext.FrameworkUsers where a.IsValid == true && (string.IsNullOrWhiteSpace(searchEntity.Createtime) || (a.CreateTime >= Createtimestart && a.CreateTime <= Createtimeend)) && (string.IsNullOrWhiteSpace(searchEntity.Name) || a.Name.Contains(searchEntity.Name.Trim())) && (string.IsNullOrWhiteSpace(searchEntity.Itcode) || a.Name.Contains(searchEntity.Itcode.Trim())) select new FrameworkUserDTO { Id = a.Id, Email = a.Email, Gender = a.Gender, CellPhone = a.CellPhone, HomePhone = a.HomePhone, Address = a.Address, ZipCode = a.ZipCode, IsIndividual = a.IsIndividual, CreateTime = a.CreateTime, CreateTimeName = a.CreateTime.HasValue? a.CreateTime.Value.ToString("yyyy-MM-dd"):"", CreateBy = a.CreateBy, UpdateTime = a.UpdateTime, UpdateBy = a.UpdateBy, Itcode = a.Itcode, Password = a.Password, Name = a.Name, IsValid = a.IsValid, PhotoId = a.PhotoId, TenantCode = a.TenantCode, WxOpenid = a.WxOpenid, Agent = a.Agent, } ); if (!string.IsNullOrWhiteSpace(searchEntity.ShifouGuanluan)) { var customerGuanlianhuiyuans = _context.CustomerGuanlianhuiyuans.Where(x => x.RecStatus == "A").ToList(); var id = new List(); foreach(var customerGuanlianhuiyuan in customerGuanlianhuiyuans) { id.Add(Guid.Parse(customerGuanlianhuiyuan.Huiyuanid)); } if (searchEntity.ShifouGuanluan == "A") { query = query.Where(a => id.Contains(a.Id)); } else { query = query.Where(a => !id.Contains(a.Id)); } } //if (searchEntity.totalrows == 0) searchEntity.totalrows = query.Count(); var lianlist = query.OrderByDescending(x => x.CreateTime).Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList(); if (lianlist.Count > 0) { var customerGuanlianhuiyuans = _context.CustomerGuanlianhuiyuans.Where(x => x.RecStatus == "A").ToList(); foreach (var lian in lianlist) { var customerGuanlianhuiyuan = customerGuanlianhuiyuans.Where(x => x.Huiyuanid == lian.Id.ToString().ToLower()).FirstOrDefault(); if (customerGuanlianhuiyuan != null) { var cooperatecustomCustomer = _context.CooperatecustomCustomers.Where(x => x.RecStatus == "A" && x.Id == customerGuanlianhuiyuan.Customerid).FirstOrDefault(); if (cooperatecustomCustomer != null) { lian.CustomerId = cooperatecustomCustomer.Id; lian.CustomerName = cooperatecustomCustomer.Name; } else { var intentionCustomer = _context.IntentionCustomers.Where(x => x.RecStatus == "A" && x.Id == customerGuanlianhuiyuan.Customerid).FirstOrDefault(); if (intentionCustomer != null) { lian.CustomerId = intentionCustomer.Id; lian.CustomerName = intentionCustomer.Name; } } } } } data.LoadData(searchEntity, lianlist); return data; } public ResultEntity saveCustomerGuanlian(CustomerGuanlianhuiyuan DTO,string CustomerIddel) { ResultEntity resultEntity = new ResultEntity(); try { if (!string.IsNullOrEmpty(CustomerIddel)) { var cooperatecustomCustomer = _context.CooperatecustomCustomers.Where(x => x.RecStatus == "A" && x.Id == CustomerIddel && x.HuiyuanId == DTO.Huiyuanid).FirstOrDefault(); if (cooperatecustomCustomer != null) { cooperatecustomCustomer.HuiyuanId = null; } var intentionCustomer = _context.IntentionCustomers.Where(x => x.RecStatus == "A" && x.Id == CustomerIddel && x.HuiyuanId == DTO.Huiyuanid).FirstOrDefault(); if (intentionCustomer != null) { intentionCustomer.HuiyuanId = null; } var customerGuanlianhuiyuan = _context.CustomerGuanlianhuiyuans.Where(x => x.RecStatus == "A" && x.Huiyuanid == DTO.Huiyuanid && x.Customerid == CustomerIddel).FirstOrDefault(); if (customerGuanlianhuiyuan != null) { _context.CustomerGuanlianhuiyuans.Remove(customerGuanlianhuiyuan); } } if (String.IsNullOrEmpty(DTO.Id)) { DTO.Id = Guid.NewGuid().ToString(); _context.CustomerGuanlianhuiyuans.Add(DTO); } else { var updateproject = _context.CustomerGuanlianhuiyuans.Find(DTO.Id); updateproject.Huiyuanid = DTO.Huiyuanid; updateproject.Customerid = DTO.Customerid; updateproject.Customertype = DTO.Customertype; updateproject.RecStatus = DTO.RecStatus; updateproject.Modifier = DTO.Modifier; updateproject.Modifytime = DTO.Modifytime; } _context.SaveChanges(); resultEntity.ReturnID = DTO.Id; resultEntity.Result = true; } catch (Exception ex) { resultEntity.Result = false; resultEntity.Message = "保存失败,请联系管理员"; } return resultEntity; } public List GetListFrameworkUser(string CustomerId) { var frameworkUsers = new List(); var listPositiontongshi = _context.CustomerGuanlianhuiyuans.Where(r => r.RecStatus == "A" && r.Customerid == CustomerId).ToList(); var huiyuanids = new List(); foreach (var customerGuanlianhuiyuan in listPositiontongshi) { huiyuanids.Add(Guid.Parse(customerGuanlianhuiyuan.Huiyuanid)); } frameworkUsers = _zcUserInfoNcontext.FrameworkUsers.Where(x => x.IsValid == true && huiyuanids.Contains(x.Id)).ToList(); var res = _mapper.Map>(frameworkUsers); if (res.Count > 0) { foreach (var lian in res) { lian.CreateTimeName = lian.CreateTime.HasValue ? lian.CreateTime.Value.ToString("yyyy-MM-dd") : ""; var customerGuanlianhuiyuan = listPositiontongshi.Where(x => x.Huiyuanid == lian.Id.ToString().ToLower()).FirstOrDefault(); if (customerGuanlianhuiyuan != null) { var cooperatecustomCustomer = _context.CooperatecustomCustomers.Where(x => x.RecStatus == "A" && x.Id == customerGuanlianhuiyuan.Customerid).FirstOrDefault(); if (cooperatecustomCustomer != null) { lian.CustomerId = cooperatecustomCustomer.Id; lian.CustomerName = cooperatecustomCustomer.Name; } else { var intentionCustomer = _context.IntentionCustomers.Where(x => x.RecStatus == "A" && x.Id == customerGuanlianhuiyuan.Customerid).FirstOrDefault(); if (intentionCustomer != null) { lian.CustomerId = intentionCustomer.Id; lian.CustomerName = intentionCustomer.Name; } } } } } return res; } } }