username@email.com
2024-01-12 0e5c4a8e17dcefcc10b2507da61b099be12451d8
zhengcaioa/Services/ExpertService.cs
@@ -25,13 +25,42 @@
            ResultEntity resultEntity = new ResultEntity();
            try
            {
                var list =  _context.Experts.Where(e => e.IdCard == expertDTO.IdCard && e.RecStatus == "A" && e.Id != expertDTO.Id).ToList();
                if (list.Count > 0 )
                if (!string.IsNullOrEmpty(expertDTO.IdCard))
                {
                    resultEntity.Result = false;
                    resultEntity.Message = "该专家信息已经存在";
                    return resultEntity;
                    var list = _context.Experts.Where(e => e.IdCard == expertDTO.IdCard && e.RecStatus == "A" && e.Id != expertDTO.Id).ToList();
                    if (list.Count > 0)
                    {
                        resultEntity.Result = false;
                        resultEntity.Message = "该专家身份证信息已经存在";
                        return resultEntity;
                    }
                }
                if (!string.IsNullOrEmpty(expertDTO.Phone1))
                {
                    var list = _context.Experts.Where(e => e.Phone1 == expertDTO.Phone1 && e.RecStatus == "A" && e.Id != expertDTO.Id).ToList();
                    if (list.Count > 0)
                    {
                        resultEntity.Result = false;
                        resultEntity.Message = "该专家联系电话信息已经存在";
                        return resultEntity;
                    }
                }
                if (!string.IsNullOrEmpty(expertDTO.CertiNumber))
                {
                    var list = _context.Experts.Where(e => e.CertiNumber == expertDTO.CertiNumber && e.RecStatus == "A" && e.Id != expertDTO.Id).ToList();
                    if (list.Count > 0)
                    {
                        resultEntity.Result = false;
                        resultEntity.Message = "该专家专家证号信息已经存在";
                        return resultEntity;
                    }
                }
                Expert expert = _mapper.Map<Expert>(expertDTO);
                if (string.IsNullOrEmpty(expert.Id))
                {
@@ -41,6 +70,11 @@
                else
                {
                    var updateplExpert = _context.Experts.Find(expert.Id);
                    if(updateplExpert.Creater == "1")
                    {
                        updateplExpert.Creater = expert.Modifier;
                        updateplExpert.Createtime = expert.Modifytime;
                    }
                    updateplExpert.Name = expert.Name;
                    updateplExpert.Sex = expert.Sex;
                    updateplExpert.InfoSource = expert.InfoSource;
@@ -62,6 +96,20 @@
                    updateplExpert.CertiBack = expert.CertiBack;
                    updateplExpert.TitileCerti = expert.TitileCerti;
                    updateplExpert.Remark = expert.Remark;
                    updateplExpert.TitileCerti1 = expert.TitileCerti1;
                    updateplExpert.TitileCerti2 = expert.TitileCerti2;
                    updateplExpert.TitileCerti3 = expert.TitileCerti3;
                    updateplExpert.TitileCerti4 = expert.TitileCerti4;
                    updateplExpert.TitileCerti5 = expert.TitileCerti5;
                    updateplExpert.TitileCerti6 = expert.TitileCerti6;
                    updateplExpert.TitileCerti7 = expert.TitileCerti7;
                    updateplExpert.TitileCerti8 = expert.TitileCerti8;
                    updateplExpert.TitileCerti9 = expert.TitileCerti9;
                    updateplExpert.TitileCerti10 = expert.TitileCerti10;
                    updateplExpert.ShenheStatus = expert.ShenheStatus;
                    updateplExpert.Modifier = expert.Modifier;
                    updateplExpert.Modifytime = expert.Modifytime;
                    updateplExpert.YearJiou = expert.YearJiou;
                }
                _context.SaveChanges();
@@ -90,6 +138,26 @@
        public ResultDataEntity<ExpertDTO> SearchByPaging(ExpertDTOSearch searchEntity) 
        {
            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
                            }
                      );
            ResultDataEntity<ExpertDTO> data = new ResultDataEntity<ExpertDTO>();
            List<ExpertDTO> list = new List<ExpertDTO>();
            //筛选
@@ -98,18 +166,98 @@
                         {
                             ExpertId = q.Key.ExpertId,
                             JoinCount = q.Count(),
                         }
                          )
                         })
                       on a.Id equals h.ExpertId
                      into hsss
                         from hhh in hsss.DefaultIfEmpty()
                         join c in listCode.Where(x => x.CodeTable == "experts" && x.CodeField == "level")
                        on a.Level equals c.CodeSn
                        into csss
                         from ccc in csss.DefaultIfEmpty()
                         join m in _context.PltUsers
                     on a.Creater equals m.Id
                     into msssss
                         from mmm in msssss.DefaultIfEmpty()
                         join n in _context.Areas
                 on a.Province equals n.CodeId
                 into nsssss
                         from nnn in nsssss.DefaultIfEmpty()
                         join o in _context.Areas
                 on a.City equals o.CodeId
                 into osssss
                         from ooo in osssss.DefaultIfEmpty()
                         join p in listCode.Where(x => x.CodeTable == "experts" && x.CodeField == "year_jiou")
                       on a.YearJiou equals p.CodeSn
                       into psss
                         from ppp in psss.DefaultIfEmpty()
                         where a.RecStatus == "A"
                          && (searchEntity.JoinCount<=0 || hhh.JoinCount >= searchEntity.JoinCount)
                         select a).ToList();
                         select new ExpertDTO
                         {
                             Id = a.Id,
                             Name = a.Name,
                             Sex = a.Sex,
                             InfoSource = a.InfoSource,
                             IdCard = a.IdCard,
                             Province = a.Province,
                             AreaId = a.AreaId,
                             City = a.City,
                             Address = a.Address,
                             Postal = a.Postal,
                             ExpertType = a.ExpertType,
                             Level = a.Level,
                             LevelName = ccc.Comments,
                             Phone1 = a.Phone1,
                             Phone2 = a.Phone2,
                             Qq = a.Qq,
                             Remark = a.Remark,
                             Creater = a.Creater,
                             CreaterName = mmm.UserName,
                             Createtime = a.Createtime,
                             CreatetimeName = a.Createtime.ToString("yyyy-MM-dd"),
                             RecStatus = a.RecStatus,
                             Modifier = a.Modifier,
                             Modifytime = a.Modifytime,
                             Wechat = a.Wechat,
                             ReviewItem = a.ReviewItem,
                             CertiNumber = a.CertiNumber,
                             CertiFont = a.CertiFont,
                             CertiBack = a.CertiBack,
                             TitileCerti = a.TitileCerti,
                             Sort = a.Sort,
                             ShenheStatus = a.ShenheStatus,
                             AreaName = nnn.Name + "-" + ooo.Name,
                             YearJiou = a.YearJiou,
                             YearJiouName = ppp.Comments,
                         }).ToList();
            if (!string.IsNullOrEmpty(searchEntity.Name))
            {
                query = query.Where(m => m.Name.Contains(searchEntity.Name)).ToList();
            }
            if (!string.IsNullOrEmpty(searchEntity.ShenheStatus))
            {
                query = query.Where(m => m.ShenheStatus == searchEntity.ShenheStatus).ToList();
            }
            if (!string.IsNullOrEmpty(searchEntity.ExpertType))
            {
@@ -127,7 +275,7 @@
            if (!string.IsNullOrEmpty(searchEntity.Province))
            {
                query = query.Where(m => m.Province == searchEntity.Province).ToList();
                query = query.Where(m => m.Province.Contains(searchEntity.Province)).ToList();
            }
            if (!string.IsNullOrEmpty(searchEntity.City))
@@ -145,21 +293,28 @@
            }
            if (!string.IsNullOrEmpty(searchEntity.CertiNumber))
            {
                query = query.Where(m => m.CertiNumber.Contains(searchEntity.CertiNumber)).ToList();
                query = query.Where(m => m.CertiNumber != null && m.CertiNumber.Contains(searchEntity.CertiNumber)).ToList();
            }
            if (!string.IsNullOrEmpty(searchEntity.Phone1))
            {
                query = query.Where(m => m.Phone1.Contains(searchEntity.Phone1)).ToList();
                query = query.Where(m => m.Phone1 != null &&  m.Phone1.Contains(searchEntity.Phone1)).ToList();
            }
            if (!string.IsNullOrEmpty(searchEntity.Creater))
            {
                query = query.Where(m => m.Creater == searchEntity.Creater).ToList();
            }
            if (!string.IsNullOrEmpty(searchEntity.YearJiou))
            {
                query = query.Where(m => m.YearJiou == searchEntity.YearJiou).ToList();
            }
           query = query.OrderByDescending(x => x.Modifytime).ToList();
            if (searchEntity.totalrows == 0)
            query = query.OrderByDescending(x => x.Modifytime).ToList();
            //if (searchEntity.totalrows == 0)
                searchEntity.totalrows = query.Count();
            var expertlist = query.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
            list = _mapper.Map<List<ExpertDTO>>(expertlist);
            //list = _mapper.Map<List<ExpertDTO>>(expertlist);
            data.LoadData(searchEntity, list);
            data.LoadData(searchEntity, expertlist);
            return data;
        
        }
@@ -181,9 +336,17 @@
            return result;
        }
        public List<ExpertDTO> GetList()
        public List<ExpertDTO> GetList(string[] id = null)
        {
            var listExperts = _context.Experts.Where(e => e.RecStatus == "A").ToList();
            var listExperts = _context.Experts.Where(e => e.RecStatus == "A" && e.ShenheStatus == "A").ToList();
            if (id != null)
            {
                listExperts = listExperts.Where(r => id.Contains(r.Id)).ToList();
            }
            var list = _mapper.Map<List<ExpertDTO>>(listExperts);
            return list;
        }
@@ -240,7 +403,7 @@
                query = query.Where(m => m.Creater.Contains(searchEntity.Creater)).ToList();
            }
            query = query.OrderByDescending(x => x.Modifytime).ToList();
            if (searchEntity.totalrows == 0)
            //if (searchEntity.totalrows == 0)
                searchEntity.totalrows = query.Count();
            var expertlist = query.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
            list = _mapper.Map<List<ExpertPromoteDTO>>(expertlist);
@@ -327,6 +490,10 @@
                         && (string.IsNullOrWhiteSpace(searchEntity.OrderNo) || a.OrderNo.Contains(searchEntity.OrderNo.Trim()))
                         && (string.IsNullOrWhiteSpace(searchEntity.KhdwName) || ggg.Name.Contains(searchEntity.KhdwName.Trim()))
                         && (string.IsNullOrWhiteSpace(searchEntity.Khlx) || ggg.Khlx == searchEntity.Khlx.Trim())
                          && (string.IsNullOrWhiteSpace(searchEntity.isDispatch) || (searchEntity.isDispatch == "1" && hod.Id!=null) || (searchEntity.isDispatch == "0" && hod.Id == null) )
                           && (string.IsNullOrWhiteSpace(searchEntity.ExpertId) ||  hod.ExpertId == searchEntity.ExpertId.Trim())
                         // && (string.IsNullOrWhiteSpace(searchEntity.HuifangStatus) || a.HuifangStatus.Contains(searchEntity.HuifangStatus.Trim()))
                         //  && (string.IsNullOrWhiteSpace(searchEntity.PingjiaStatus) || a.PingjiaStatus.Contains(searchEntity.PingjiaStatus.Trim()))
@@ -366,7 +533,7 @@
            if (searchEntity.totalrows == 0)
            //if (searchEntity.totalrows == 0)
                searchEntity.totalrows = query.Count();
            var lianlist = query.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
            data.LoadData(searchEntity, lianlist);
@@ -381,7 +548,19 @@
                if (string.IsNullOrEmpty(dispatch.Id))
                {
                    dispatch.Id = Guid.NewGuid().ToString();
                    dipatchDTO.Id = dispatch.Id;
                    _context.ExpertOrderDispatches.Add(dispatch);
                }
                else
                {
                   var model = _context.ExpertOrderDispatches.Find(dispatch.Id);
                    model.Orderid = dipatchDTO.OrderId;
                    model.ExpertId = dipatchDTO.ExpertId;
                    model.Money = dipatchDTO.Money;
                    model.RecStatus = dipatchDTO.RecStatus;
                    model.Modifier = dipatchDTO.Modifier;
                    model.Modifytime = dipatchDTO.Modifytime.Value;
                    model.Sort = dipatchDTO.sort;
                }
                _context.SaveChanges();
                resultEntity.ReturnID = dispatch.Id;
@@ -398,7 +577,328 @@
        #endregion
        #region 专家结算
        /// <summary>
        /// 查询专家结算
        /// </summary>
        /// <param name="searchEntity"></param>
        /// <returns></returns>
        public ResultDataEntity<ExpertOrderDipatchDTO> SearchJiesuan(ExpertOrderDipatchDTOSearch searchEntity)
        {
            ResultDataEntity<ExpertOrderDipatchDTO> data = new ResultDataEntity<ExpertOrderDipatchDTO>();
            List<ExpertOrderDipatchDTO> list = new List<ExpertOrderDipatchDTO>();
            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 PdTimestart = DateTime.Now;
            DateTime PdTimeend = DateTime.Now;
            if (!string.IsNullOrWhiteSpace(searchEntity.PdTime))
            {
                string[] PdTimes = searchEntity.PdTime.Split("|");
                DateTime.TryParse(PdTimes[0], out PdTimestart);
                DateTime.TryParse(PdTimes[1], out PdTimeend);
                PdTimeend = PdTimeend.AddDays(1);
            }
            var query = (from hod in _context.ExpertOrderDispatches.Where(x => x.RecStatus == "A")
                         join  a in _context.CooperOrders on hod.Orderid equals a.Id
                         join b in listCode.Where(x => x.CodeTable == "CooperOrder" && x.CodeField == "shouli_status")
                         on a.ShouliStatus equals b.CodeSn
                         into bsss
                         from bbb in bsss.DefaultIfEmpty()
                         join f in listCode.Where(x => x.CodeTable == "CooperVisit" && x.CodeField == "jtype")
                         on a.OrderType equals f.CodeSn
                          into fsssss
                         from fff in fsssss.DefaultIfEmpty()
                         join k in listCode.Where(x => x.CodeTable == "system" && x.CodeField == "shifou")
                        on hod.Sort equals k.CodeSn
                         into ksssss
                         from kkk in ksssss.DefaultIfEmpty()
                         join ggg in _context.CooperatecustomCustomers
                          on a.Khdw equals ggg.Id
                         join expt in _context.Experts
                           on hod.ExpertId equals expt.Id
                         where a.RecStatus == "A"
                          && (string.IsNullOrWhiteSpace(searchEntity.PdTime) || (hod.Createtime >= PdTimestart && hod.Createtime <= PdTimeend))
                             && (string.IsNullOrWhiteSpace(searchEntity.ExpertId) || hod.ExpertId == searchEntity.ExpertId.Trim())
                               && (string.IsNullOrWhiteSpace(searchEntity.OrderNo) || a.OrderNo.Contains(searchEntity.OrderNo.Trim()))
                                && (string.IsNullOrWhiteSpace(searchEntity.Sort) || hod.Sort == searchEntity.Sort.Trim())
                         select new ExpertOrderDipatchDTO
                         {
                             Id = hod.Id,
                             XdTime = a.XdTime,
                             XdTimeName = a.XdTime.ToString("yyyy-MM-dd"),
                             OrderId = a.Id,
                             OrderNo = a.OrderNo,
                             Khdw = a.Khdw,
                             KhdwName = ggg.Name,
                             OrderType = a.OrderType,
                             OrderTypeName = fff.Comments,
                             //OrderPro = a.OrderPro,
                             //OrderProName = hhh.Name,
                             //OrderNum = a.OrderNum,
                             Shr = a.Shr,
                             ShrAddress = a.ShrAddress,
                             ShrTel = a.ShrTel,
                             Money = hod.Money,
                             Creater = hod.Creater,
                             Createtime = hod.Createtime,
                             CreatetimeName = hod.Createtime.ToString("yyyy-MM-dd"),
                             ExpertId = hod.ExpertId,
                             ExpertName = expt.Name,
                             RecStatus = hod.RecStatus,
                             Modifier = hod.Modifier,
                             Modifytime = hod.Modifytime,
                             sort = kkk.Comments,
                         }
                ).OrderByDescending(x => x.XdTime).ToList();
            //if (searchEntity.totalrows == 0)
                searchEntity.totalrows = query.Count();
            var lianlist = query.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
            data.LoadData(searchEntity, lianlist);
            return data;
        }
        #endregion
        public ExpertOrderDipatchDTO GetDispatch(string id)
        {
            var entity = _context.ExpertOrderDispatches.Find(id);
            if (entity.RecStatus != "A")
            {
                entity = new ExpertOrderDispatch();
            }
            var exDTO = _mapper.Map<ExpertOrderDipatchDTO>(entity);
            return exDTO;
        }
        public ResultEntity IdCardChongfu(string IdCard = "", string Id = "")
        {
            ResultEntity resultEntity = new ResultEntity();
            resultEntity.Result = true;
            try
            {
                if (!string.IsNullOrEmpty(IdCard))
                {
                    var list = _context.Experts.Where(e => e.IdCard == IdCard && e.RecStatus == "A" && e.Id != Id).ToList();
                    if (list.Count > 0)
                    {
                        resultEntity.Result = false;
                        resultEntity.Message = "该专家身份证信息已经存在";
                        return resultEntity;
                    }
                }
            }
            catch (Exception ex)
            {
                resultEntity.Result = false;
                resultEntity.Message = "查询失败,请联系管理员";
                ex.Message.ToString();
            }
            return resultEntity;
        }
        public ResultEntity CertiNumberChongfu(string CertiNumber = "", string Id = "")
        {
            ResultEntity resultEntity = new ResultEntity();
            resultEntity.Result = true;
            try
            {
                if (!string.IsNullOrEmpty(CertiNumber))
                {
                    var list = _context.Experts.Where(e => e.CertiNumber == CertiNumber && e.RecStatus == "A" && e.Id != Id).ToList();
                    if (list.Count > 0)
                    {
                        resultEntity.Result = false;
                        resultEntity.Message = "该专家专家证号信息已经存在";
                        return resultEntity;
                    }
                }
            }
            catch (Exception ex)
            {
                resultEntity.Result = false;
                resultEntity.Message = "查询失败,请联系管理员";
                ex.Message.ToString();
            }
            return resultEntity;
        }
        public ResultEntity Phone1Chongfu(string Phone1 = "", string Id = "")
        {
            ResultEntity resultEntity = new ResultEntity();
            resultEntity.Result = true;
            try
            {
                if (!string.IsNullOrEmpty(Phone1))
                {
                    var list = _context.Experts.Where(e => e.Phone1 == Phone1 && e.RecStatus == "A" && e.Id != Id).ToList();
                    if (list.Count > 0)
                    {
                        resultEntity.Result = false;
                        resultEntity.Message = "该专家联系电话信息已经存在";
                        return resultEntity;
                    }
                }
            }
            catch (Exception ex)
            {
                resultEntity.Result = false;
                resultEntity.Message = "查询失败,请联系管理员";
                ex.Message.ToString();
            }
            return resultEntity;
        }
        public List<ExpertDTO> GetListsalary(string userid, DateTime datemin, DateTime datemax)
        {
            var listPosition = _context.Experts.Where(r => r.RecStatus == "A"&& r.ShenheStatus=="A"&& r.Creater == userid && r.Createtime >= datemin && r.Createtime < datemax).ToList();
            var list = _mapper.Map<List<ExpertDTO>>(listPosition);
            return list;
        }
        public ResultEntity savehezuo(ExpertDTO expertDTO)
        {
            ResultEntity resultEntity = new ResultEntity();
            try
            {
                Expert expert = _mapper.Map<Expert>(expertDTO);
                if (string.IsNullOrEmpty(expert.Id))
                {
                    expert.Id = Guid.NewGuid().ToString();
                    _context.Experts.Add(expert);
                }
                else
                {
                    var updateplExpert = _context.Experts.Find(expert.Id);
                    if (updateplExpert.Creater == "1")
                    {
                        updateplExpert.Creater = expert.Modifier;
                        updateplExpert.Createtime = expert.Modifytime;
                    }
                    updateplExpert.Name = expert.Name;
                    updateplExpert.Sex = expert.Sex;
                    updateplExpert.InfoSource = expert.InfoSource;
                    updateplExpert.IdCard = expert.IdCard;
                    updateplExpert.Province = expert.Province;
                    updateplExpert.AreaId = expert.AreaId;
                    updateplExpert.City = expert.City;
                    updateplExpert.Address = expert.Address;
                    updateplExpert.Postal = expert.Postal;
                    updateplExpert.ExpertType = expert.ExpertType;
                    updateplExpert.Level = expert.Level;
                    updateplExpert.Phone1 = expert.Phone1;
                    updateplExpert.Phone2 = expert.Phone2;
                    updateplExpert.Qq = expert.Qq;
                    updateplExpert.Wechat = expert.Wechat;
                    updateplExpert.ReviewItem = expert.ReviewItem;
                    updateplExpert.CertiNumber = expert.CertiNumber;
                    updateplExpert.CertiFont = expert.CertiFont;
                    updateplExpert.CertiBack = expert.CertiBack;
                    updateplExpert.TitileCerti = expert.TitileCerti;
                    updateplExpert.Remark = expert.Remark;
                    updateplExpert.TitileCerti1 = expert.TitileCerti1;
                    updateplExpert.TitileCerti2 = expert.TitileCerti2;
                    updateplExpert.TitileCerti3 = expert.TitileCerti3;
                    updateplExpert.TitileCerti4 = expert.TitileCerti4;
                    updateplExpert.TitileCerti5 = expert.TitileCerti5;
                    updateplExpert.TitileCerti6 = expert.TitileCerti6;
                    updateplExpert.TitileCerti7 = expert.TitileCerti7;
                    updateplExpert.TitileCerti8 = expert.TitileCerti8;
                    updateplExpert.TitileCerti9 = expert.TitileCerti9;
                    updateplExpert.TitileCerti10 = expert.TitileCerti10;
                    updateplExpert.ShenheStatus = expert.ShenheStatus;
                    updateplExpert.Modifier = expert.Modifier;
                    updateplExpert.Modifytime = expert.Modifytime;
                    updateplExpert.YearJiou = expert.YearJiou;
                }
                _context.SaveChanges();
                resultEntity.ReturnID = expert.Id;
                resultEntity.Result = true;
            }
            catch (Exception ex)
            {
                resultEntity.Result = false;
                resultEntity.Message = "保存失败,请联系管理员";
                ex.Message.ToString();
            }
            return resultEntity;
        }
    }
}