username@email.com
2023-07-12 69e9ce6ae24fce670fb8d7af0e1f132e2e009dbc
zhengcaioa/Services/IntentionCustomerService.cs
@@ -49,12 +49,43 @@
            if (String.IsNullOrEmpty(intentionCustomer.Id))
            {
                    if (!string.IsNullOrEmpty(intentionCustomer.Ywjl))
                    {
                        intentionCustomer.Ywjltime = DateTime.Now;
                        var Cooper = _context.CooperatecustomCustomers.Count(x => x.RecStatus == "A" && x.Ywjl == intentionCustomer.Ywjl);
                        var Inten = _context.IntentionCustomers.Count(x => x.RecStatus == "A" && x.Ywjl == intentionCustomer.Ywjl);
                        if(Cooper+ Inten > 2000)
                        {
                            resultEntity.Result = false;
                            resultEntity.Message = "该业务经理,客户单位和合作客户合计超过2000!";
                            return resultEntity;
                        }
                    }
                    intentionCustomer.Id = Guid.NewGuid().ToString();
                _context.IntentionCustomers.Add(intentionCustomer);
            }
            else
            {
                var updateproject = _context.IntentionCustomers.Find(intentionCustomer.Id);
                    var updateproject = _context.IntentionCustomers.Find(intentionCustomer.Id);
                    if (!string.IsNullOrEmpty(intentionCustomer.Ywjl) && (string.IsNullOrEmpty(updateproject.Ywjl) || !string.IsNullOrEmpty(updateproject.Ywjl) && intentionCustomer.Ywjl!= updateproject.Ywjl ))
                    {
                        updateproject.Ywjltime = DateTime.Now;
                        var Cooper = _context.CooperatecustomCustomers.Count(x => x.RecStatus == "A" && x.Ywjl == intentionCustomer.Ywjl);
                        var Inten = _context.IntentionCustomers.Count(x => x.RecStatus == "A" && x.Ywjl == intentionCustomer.Ywjl);
                        if (Cooper + Inten >= 2000)
                        {
                            resultEntity.Result = false;
                            resultEntity.Message = "该业务经理,客户单位和合作客户合计超过2000!";
                            return resultEntity;
                        }
                    }
                    if (string.IsNullOrEmpty(intentionCustomer.Ywjl)){
                        updateproject.Ywjltime = null;
                    }
                updateproject.Sheng = intentionCustomer.Sheng;
                updateproject.City = intentionCustomer.City;
@@ -111,9 +142,9 @@
                var listPosition = _context.IntentionCustomers.Where(r => r.RecStatus == "A").ToList();
              var  intentionCustomerDTOs = _mapper.Map<List<IntentionCustomerDTO>>(listPosition);
                CacheHelperNetCore.CacheInsert("intentionCustomerDTOs", intentionCustomerDTOs);
                // var  intentionCustomerDTOs = _mapper.Map<List<IntentionCustomerDTO>>(listPosition);
                //CacheHelperNetCore.CacheInsert("intentionCustomerDTOs", intentionCustomerDTOs);
                CacheHelperNetCore.CacheNull("intentionCustomerDTOs");
                resultEntity.ReturnID = intentionCustomer.Id;
            resultEntity.Result = true;
        }
@@ -131,7 +162,7 @@
        var entity = _context.IntentionCustomers.Find(id);
            if (entity.RecStatus != "A")
            if (entity ==null || entity.RecStatus != "A")
            {
                entity = new IntentionCustomer();
            }
@@ -206,34 +237,51 @@
               // Yixiangtimeend = Yixiangtimeend.AddDays(1);
            }
            int aaaa = 0;
            if (!string.IsNullOrWhiteSpace(searchEntity.Visittimes))
            {
                int.TryParse(searchEntity.Visittimes, out aaaa);
            }
            var query = (from a in _context.IntentionCustomers
                     join b in listCode.Where(x => x.CodeTable == "IntentionCustomer" && x.CodeField == "khly")
                     on a.Khly equals b.CodeSn
                     join c in listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "hyfl")
                     on a.Hyfl equals c.CodeSn
                     join d in listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "khlx")
                    on a.Khlx equals d.CodeSn
                     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 b in listCode.Where(x => x.CodeTable == "IntentionCustomer" && x.CodeField == "khly")
                    // on a.Khly equals b.CodeSn
                    // join c in listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "hyfl")
                    // on a.Hyfl equals c.CodeSn
                    // join d in listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "khlx")
                    //on a.Khlx equals d.CodeSn
                    // 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.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A" )
                            on a.Dianxiaozhuanyuan equals f.Id
                            into fsss
                             from fff in fsss.DefaultIfEmpty()
                    //         join f in _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A" )
                    //        on a.Dianxiaozhuanyuan equals f.Id
                    //        into fsss
                    //         from fff in fsss.DefaultIfEmpty()
                             join f in _context.Areas on a.Sheng equals f.CodeId
                     join g in _context.Areas on a.City equals g.CodeId
                     join h in _context.Areas on a.AreaId equals h.CodeId
                    //         join f in _context.Areas on a.Sheng equals f.CodeId
                    // join g in _context.Areas on a.City equals g.CodeId
                    // join h in _context.Areas on a.AreaId equals h.CodeId
                     where a.RecStatus == "A"
                         join l in _context.IntentionVisits.Where(x => x.RecStatus == "A").GroupBy(q => new { q.Viscustomer }).Select(q => new
                         {
                             Viscustomer = q.Key.Viscustomer,
                             Visittimes = q.Count(),
                         })
                           on a.Id equals l.Viscustomer
                         into lsss
                         from lll in lsss.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.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())
@@ -243,6 +291,9 @@
                                
                                    && (string.IsNullOrWhiteSpace(searchEntity.Yixiangtime) || (a.Yixiangtime >= Yixiangtimestart && a.Yixiangtime <= Yixiangtimeend))
                                      && (string.IsNullOrWhiteSpace(searchEntity.Yixiang) || ( a.Yixiang == searchEntity.Yixiang.Trim() && (a.Ywjl == null || a.Ywjl == searchEntity.YwjlYx) ))
                                       && (aaaa <= 0 || lll.Visittimes >= aaaa)
                                      //&& (string.IsNullOrWhiteSpace(searchEntity.Shifouweixin) || a.Shifoutianjiaweixin == searchEntity.Shifouweixin.Trim())
                         select new IntentionCustomerDTO
                     {
@@ -254,13 +305,13 @@
                         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,
                         YwjlName = abi.UserName,
                         //ShengName = f.Name + "-" + g.Name + "-" + h.Name,
                         //CityName = g.Name,
                         //AreaIdName = h.Name,
                         //KhlyName = b.Comments,
                         //HyflName = c.Comments,
                         //KhlxName = d.Comments,
                         //YwjlName = abi.UserName,
                         Name = a.Name,
                         Postal = a.Postal,
                         Address = a.Address,
@@ -297,16 +348,46 @@
                                 YixiangtimeName = a.Yixiangtime.HasValue? a.Yixiangtime.Value.ToString("yyyy-MM-dd"):"",
                                 Yixiang = a.Yixiang,
                                 Dianxiaozhuanyuan = a.Dianxiaozhuanyuan,
                                 DianxiaozhuanyuanName = fff.UserName,
                                 //DianxiaozhuanyuanName = fff.UserName,
                                 Zuijinzhuizongtime = a.Zuijinzhuizongtime,
                                 ZuijinzhuizongtimeName = a.Zuijinzhuizongtime.HasValue ? a.Zuijinzhuizongtime.Value.ToString("yyyy-MM-dd") : "",
                             }
                             Visittimes = lll.Visittimes,
                             Kuaidistatus = a.Kuaidistatus,
                             Kuaiditime = a.Kuaiditime,
                         }
                    );
            if (!string.IsNullOrWhiteSpace(searchEntity.Shifouweixin))
            {
                query = query.Where( a=>a.Shifoutianjiaweixin == searchEntity.Shifouweixin.Trim());
            }
            if (!string.IsNullOrWhiteSpace(searchEntity.Kuaidistatus))
            {
                if (searchEntity.Kuaidistatus == "A")
                {
                    query = query.Where(a => a.Kuaidistatus == searchEntity.Kuaidistatus.Trim());
                }
                else
                {
                    query = query.Where(a => a.Kuaidistatus == searchEntity.Kuaidistatus.Trim() || a.Kuaidistatus == null);
                }
            }
            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 (!string.IsNullOrWhiteSpace(searchEntity.ShifouDianhua))
            {
                if (searchEntity.ShifouDianhua != "A")
@@ -319,12 +400,97 @@
                }
                
            }
            if (!string.IsNullOrWhiteSpace(searchEntity.Visittimes))
            {
                if (searchEntity.ShifouDianhua != "A")
                {
                    query = query.Where(a => a.Tel == null || a.Tel == "");
                }
                else
                {
                    query = query.Where(a => a.Tel != null && a.Tel != "");
                }
        //if (searchEntity.totalrows == 0)
            }
            //if (searchEntity.totalrows == 0)
            searchEntity.totalrows = query.Count();
        var lianlist = query.OrderByDescending(x => x.Modifytime).Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
        data.LoadData(searchEntity, lianlist);
            if(lianlist!=null && lianlist.Count > 0)
            {
                var areas = _context.Areas;
                var pltUsers = _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A");
                var khly = listCode.Where(x => x.CodeTable == "IntentionCustomer" && x.CodeField == "khly");
                var hyfl = listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "hyfl");
                var khlx = listCode.Where(x => x.CodeTable == "CooperatecustomCustomer" && x.CodeField == "khlx");
                foreach (var intentionCustomerDTO in lianlist)
                {
                  var sheng =  areas.Where(x => x.CodeId == intentionCustomerDTO.Sheng).FirstOrDefault();
                    var city = areas.Where(x => x.CodeId == intentionCustomerDTO.City).FirstOrDefault();
                    var Area = areas.Where(x => x.CodeId == intentionCustomerDTO.AreaId).FirstOrDefault();
                    if (sheng != null)
                    {
                        intentionCustomerDTO.ShengName = sheng.Name;
                    }
                    if (city != null)
                    {
                        intentionCustomerDTO.CityName = city.Name;
                        intentionCustomerDTO.ShengName += "-" + city.Name;
                    }
                    if (Area != null)
                    {
                        intentionCustomerDTO.AreaIdName = Area.Name;
                        intentionCustomerDTO.ShengName += "-" + Area.Name;
                    }
                   var ywjl  = pltUsers.Where(x => x.Id == intentionCustomerDTO.Ywjl).FirstOrDefault();
                    if (ywjl != null)
                    {
                        intentionCustomerDTO.YwjlName = ywjl.UserName;
                    }
                    var Dianxiaozhuanyuan = pltUsers.Where(x => x.Id == intentionCustomerDTO.Dianxiaozhuanyuan).FirstOrDefault();
                    if (Dianxiaozhuanyuan != null)
                    {
                        intentionCustomerDTO.DianxiaozhuanyuanName = Dianxiaozhuanyuan.UserName;
                    }
                    var KhlyName = khly.Where(x => x.CodeSn == intentionCustomerDTO.Khly).FirstOrDefault();
                    if (KhlyName != null)
                    {
                        intentionCustomerDTO.KhlyName = KhlyName.Comments;
                    }
                    var HyflName = hyfl.Where(x => x.CodeSn == intentionCustomerDTO.Hyfl).FirstOrDefault();
                    if (HyflName != null)
                    {
                        intentionCustomerDTO.HyflName = HyflName.Comments;
                    }
                    var KhlxName = khlx.Where(x => x.CodeSn == intentionCustomerDTO.Khlx).FirstOrDefault();
                    if (KhlxName != null)
                    {
                        intentionCustomerDTO.KhlxName = KhlxName.Comments;
                    }
                    intentionCustomerDTO.Guanliankehushu = _context.CustomerGuanlians.Count(x => x.CustomerId == intentionCustomerDTO.Id);
                }
            }
            //foreach (var intentionCustomerDTO in lianlist)
            //{
            //    intentionCustomerDTO.Visittimes = _context.IntentionVisits.Count(x => x.RecStatus == "A" && x.Viscustomer == intentionCustomerDTO.Id);
            //}
                data.LoadData(searchEntity, lianlist);
        return data;
    }
@@ -359,21 +525,32 @@
        /// 获取所有有效意向客户
        /// </summary>
        /// <returns></returns>
        public List<IntentionCustomerDTO> GetList()
        public List<IntentionCustomerDTO> GetList(string huiyuanId = null)
        {
            List<IntentionCustomerDTO> intentionCustomerDTOs = (List<IntentionCustomerDTO>)CacheHelperNetCore.CacheValue("intentionCustomerDTOs");
            if (intentionCustomerDTOs != null && intentionCustomerDTOs.Count > 0)
            {
                if (!string.IsNullOrEmpty(huiyuanId))
                {
                    intentionCustomerDTOs = intentionCustomerDTOs.Where(x => x.HuiyuanId == huiyuanId).ToList();
                }
                return intentionCustomerDTOs;
            }
            var listPosition = _context.IntentionCustomers.Where(r => r.RecStatus == "A").ToList();
            intentionCustomerDTOs = _mapper.Map<List<IntentionCustomerDTO>>(listPosition);
            CacheHelperNetCore.CacheInsert("intentionCustomerDTOs", intentionCustomerDTOs);
            var list = _mapper.Map<List<IntentionCustomerDTO>>(listPosition);
            return list;
            if (!string.IsNullOrEmpty(huiyuanId))
            {
                listPosition = listPosition.Where(x => x.HuiyuanId == huiyuanId).ToList();
            }
            intentionCustomerDTOs = _mapper.Map<List<IntentionCustomerDTO>>(listPosition);
            return intentionCustomerDTOs;
        }
        /// <summary>
@@ -427,5 +604,70 @@
            return list;
        }
        public ResultEntity saveKhlx(CooperatecustomCustomerDTO cooperatecustomCustomerDTO)
        {
            ResultEntity resultEntity = new ResultEntity();
            try
            {
                var updateproject = _context.IntentionCustomers.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 ResultEntity GetZhengfuProjectDTOByTitle(string Name, string Id)
        {
            ResultEntity resultEntity = new ResultEntity();
            resultEntity.Result = true;
            if (!string.IsNullOrWhiteSpace(Name))
            {
               var checkUserSn = _context.IntentionCustomers.Where(r => r.RecStatus == "A" && r.Name == Name).FirstOrDefault();
                if (checkUserSn != null && (string.IsNullOrWhiteSpace(Id) || (!string.IsNullOrWhiteSpace(Id) && checkUserSn.Id != Id)))
                {
                    resultEntity.Result = false;
                    resultEntity.Message = "该档案客户已经存在";
                }
                var checkUserSncooper = _context.CooperatecustomCustomers.Where(r => r.RecStatus == "A" && r.Name == Name).FirstOrDefault();
                if (checkUserSncooper != null && (string.IsNullOrWhiteSpace(Id) || (!string.IsNullOrWhiteSpace(Id) && checkUserSncooper.Id != Id)))
                {
                    resultEntity.Result = false;
                    resultEntity.Message = "该合作客户已经存在";
                }
            }
            return resultEntity;
        }
    }
}