username@email.com
2022-08-27 6e2b929cf381e2320ba6e7dec56c0371124d2b51
zhengcaioa/Services/CooperOrderService.cs
@@ -14,11 +14,13 @@
   public class CooperOrderService: ICooperOrderService
    {
        private readonly zhengcaioaContext _context;
        private readonly zcUserInfoN_dbContext _zcUserInfoN_dbContext;
        private readonly IMapper _mapper;
        public CooperOrderService(zhengcaioaContext context, IMapper mapper)
        public CooperOrderService(zhengcaioaContext context, IMapper mapper, zcUserInfoN_dbContext zcUserInfoN_dbContext)
        {
            _context = context;
            _mapper = mapper;
            _zcUserInfoN_dbContext = zcUserInfoN_dbContext;
        }
@@ -35,6 +37,7 @@
                if (String.IsNullOrEmpty(entity.Id))
                {
                    entity.Id = Guid.NewGuid().ToString();
                    dto.Id = entity.Id;
                    var datestreing = DateTime.Now.ToString("yyyyMMdd");
                    var OrderNo =  _context.CooperOrders.Where(x => x.OrderNo.Contains(datestreing)).Max(x=>x.OrderNo);
                    if (string.IsNullOrEmpty(OrderNo))
@@ -87,6 +90,9 @@
                    updateproject.SonghuoTime1 = entity.SonghuoTime1;
                    updateproject.HuifangJdr = entity.HuifangJdr;
                    updateproject.HuifangKehuyijian = entity.HuifangKehuyijian;
                    updateproject.Xmname = entity.Xmname;
                    updateproject.Xmcode = entity.Xmcode;
                    updateproject.Jichumoney = entity.Jichumoney;
                }
@@ -101,6 +107,24 @@
            }
            return resultEntity;
        }
        public string GetOrderNo()
        {
            string OrderNoback = "";
            var datestreing = DateTime.Now.ToString("yyyyMMdd");
            var OrderNo = _context.CooperOrders.Where(x => x.OrderNo.Contains(datestreing)).Max(x => x.OrderNo);
            if (string.IsNullOrEmpty(OrderNo))
            {
                OrderNoback = datestreing + 1.ToString().PadLeft(3, '0');
            }
            else
            {
                OrderNoback = datestreing + (int.Parse(OrderNo.Substring(OrderNo.Length - 3)) + 1).ToString().PadLeft(3, '0');
            }
            return OrderNoback;
        }
        public CooperOrderDTO Get(string id)
@@ -154,7 +178,7 @@
                string[] XdTimes = searchEntity.XdTime.Split("|");
                DateTime.TryParse(XdTimes[0], out XdTimestart);
                DateTime.TryParse(XdTimes[1], out XdTimeend);
                //XdTimeend = XdTimeend.AddDays(1);
                XdTimeend = XdTimeend.AddDays(1);
            }
@@ -221,6 +245,11 @@
                   into msssss
                         from mmm in msssss.DefaultIfEmpty()
                         join n in _context.PltUsers
                on a.Creater equals n.Id
                into nsssss
                         from nnn in nsssss.DefaultIfEmpty()
                         where a.RecStatus == "A"
                          && (string.IsNullOrWhiteSpace(searchEntity.XdTime) || (a.XdTime >= XdTimestart && a.XdTime <= XdTimeend))
                                    && (string.IsNullOrWhiteSpace(searchEntity.Ywjl) || ggg.Ywjl == searchEntity.Ywjl.Trim())
@@ -265,7 +294,8 @@
                             Remark = a.Remark,
                             Creater = a.Creater,
                             Createtime = a.Createtime,
            CreaterName = nnn.UserName,
            Createtime = a.Createtime,
                             RecStatus = a.RecStatus,
                             Modifier = a.Modifier,
@@ -315,9 +345,17 @@
            if (searchEntity.totalrows == 0)
            //if (searchEntity.totalrows == 0)
                searchEntity.totalrows = query.Count();
            data.Heji1 = Math.Round(query.Sum(x => x.OrderNum) ?? 0, 2);
            data.Heji2 = Math.Round(query.Sum(x => x.Price) ?? 0, 2);
            data.Heji3 = Math.Round(query.Sum(x => x.Money) ?? 0, 2);
            data.Heji4 = Math.Round(query.Sum(x => x.Youhui) ?? 0, 2);
            var lianlist = query.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
            data.DangyeHeji1 = Math.Round(lianlist.Sum(x => x.OrderNum) ?? 0, 2);
            data.DangyeHeji2 = Math.Round(lianlist.Sum(x => x.Price) ?? 0, 2);
            data.DangyeHeji3 = Math.Round(lianlist.Sum(x => x.Money) ?? 0, 2);
            data.DangyeHeji4 = Math.Round(lianlist.Sum(x => x.Youhui) ?? 0, 2);
            data.LoadData(searchEntity, lianlist);
            return data;
        }
@@ -900,6 +938,1227 @@
        }
        public List<TChallengeletterDTO> GetListChallengeletter(string OrderId)
        {
            var entity = _context.TChallengeletters.Where(x =>/* x.Status == 1 && */x.OrderId == OrderId).ToList();
            var result = _mapper.Map<List<TChallengeletterDTO>>(entity);
            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
                            }
                   ).Where(x => x.CodeTable == "t_challengeletter" && x.CodeField == "request_info").ToList();
            foreach(var challengeletterDTO in result)
            {
              var codeDataEntity  = listCode.Where(x => x.CodeSn == challengeletterDTO.RequestInfo).FirstOrDefault();
                if (codeDataEntity != null)
                {
                    challengeletterDTO.RequestInfoName = codeDataEntity.Comments;
                }
            }
            return result;
        }
        public List<TChallengeletterDTO> GetListChallengelettertousu(string customid, string XmCode)
        {
            var entity = (from a in _context.CooperOrders.Where(x=>x.OrderType1== "代拟质疑函" && x.RecStatus == "A" && x.Khdw == customid)
                          join b in _context.TChallengeletters.Where(x=>x.XmCode == XmCode) on a.Id equals b.OrderId
                          select b ).ToList();
            //_context.TChallengeletters.Where(x =>/* x.Status == 1 && */x.OrderId == OrderId).ToList();
            var result = _mapper.Map<List<TChallengeletterDTO>>(entity);
            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
                            }
                   ).Where(x => x.CodeTable == "t_challengeletter" && x.CodeField == "request_info").ToList();
            foreach (var challengeletterDTO in result)
            {
                var codeDataEntity = listCode.Where(x => x.CodeSn == challengeletterDTO.RequestInfo).FirstOrDefault();
                if (codeDataEntity != null)
                {
                    challengeletterDTO.RequestInfoName = codeDataEntity.Comments;
                }
            }
            return result;
        }
        public List<TChallengeletterDTO> GetListChallengeletterChosen()
        {
            var query = (from a in _context.TChallengeletters
                         join b in _context.CooperOrders.Where(x => x.RecStatus == "A")
                         on a.OrderId equals b.Id
                         select new TChallengeletterDTO
                         {
                             Id = b.Id,
                             OrderId  = b.OrderNo,
                             khid = b.Khdw,
                             Createtime = b.Createtime,
                         }
                         ).OrderByDescending(x=>x.Createtime).ToList();
            return query;
        }
        public ResultEntity saveChallengeletter(TChallengeletterDTO dto)
        {
            ResultEntity resultEntity = new ResultEntity();
            try
            {
                var entity = _mapper.Map<TChallengeletter>(dto);
                if (String.IsNullOrEmpty(entity.Id))
                {
                    entity.Id = Guid.NewGuid().ToString();
                    dto.Id = entity.Id;
                    _context.TChallengeletters.Add(entity);
                }
                else
                {
                    var updateproject = _context.TChallengeletters.Find(entity.Id);
                    updateproject.PrintNum = entity.PrintNum;
                    updateproject.OrderId = entity.OrderId;
                    updateproject.GysId = entity.GysId;
                    updateproject.GysName = entity.GysName;
                    updateproject.GysAddress = entity.GysAddress;
                    updateproject.GysPostcode = entity.GysPostcode;
                    updateproject.GysContacts = entity.GysContacts;
                    updateproject.GysPhone = entity.GysPhone;
                    updateproject.SqdbId = entity.SqdbId;
                    updateproject.SqdbName = entity.SqdbName;
                    updateproject.SqdbPhone = entity.SqdbPhone;
                    updateproject.SqdbAddress = entity.SqdbAddress;
                    updateproject.SqdbPostcode = entity.SqdbPostcode;
                    updateproject.XmId = entity.XmId;
                    updateproject.XmName = entity.XmName;
                    updateproject.XmCode = entity.XmCode;
                    updateproject.XmPackage = entity.XmPackage;
                    updateproject.PurchaserName = entity.PurchaserName;
                    updateproject.DocumentsDate = entity.DocumentsDate;
                    updateproject.RequestInfo = entity.RequestInfo;
                    updateproject.IsReply = entity.IsReply;
                    updateproject.Status = entity.Status;
                    updateproject.Respondent = entity.Respondent;
                    updateproject.RespondDate = entity.RespondDate;
                    updateproject.RespondInfo = entity.RespondInfo;
                    updateproject.Modifier = entity.Modifier;
                    updateproject.Modifytime = entity.Modifytime;
                }
                _context.SaveChanges();
                resultEntity.ReturnID = entity.Id;
                resultEntity.Result = true;
            }
            catch (Exception ex)
            {
                resultEntity.Result = false;
                resultEntity.Message = "保存失败,请联系管理员";
            }
            return resultEntity;
        }
        public List<TChallengeItemDTO> GetListChallengeItem(string ChallengeId)
        {
            var entity = _context.TChallengeItems.Where(x =>  x.ChallengeId == ChallengeId).OrderBy(x => x.Sort).ToList();
            var result = _mapper.Map<List<TChallengeItemDTO>>(entity);
            var question = (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
                            }
                   ).Where(x => x.CodeTable == "t_challenge_items" && x.CodeField == "question").ToList();
            var law = (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
                            }
                 ).Where(x => x.CodeTable == "t_complaint_items" && x.CodeField == "law").ToList();
            var falv = (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
                       }
               ).Where(x => x.CodeTable == "expert_test_topicjiexi" && x.CodeField == "falv").ToList();
            foreach (var challengeItemDTO in result)
            {
                var codeDataEntity = question.Where(x => x.CodeSn == challengeItemDTO.Question).FirstOrDefault();
                if (codeDataEntity != null)
                {
                    challengeItemDTO.QuestionName = codeDataEntity.Comments;
                }
                codeDataEntity = law.Where(x => x.CodeSn == challengeItemDTO.Law).FirstOrDefault();
                if (codeDataEntity != null)
                {
                    challengeItemDTO.LawName = codeDataEntity.Comments;
                    challengeItemDTO.Lawcoment = codeDataEntity.Contents;
                    codeDataEntity = falv.Where(x => x.CodeSn == challengeItemDTO.LawName).FirstOrDefault();
                    if (codeDataEntity != null)
                    {
                        challengeItemDTO.LawName = codeDataEntity.Comments;
                    }
                }
            }
            return result;
        }
        public ResultEntity saveChallengeItem(TChallengeItemDTO dto)
        {
            ResultEntity resultEntity = new ResultEntity();
            try
            {
                var entity = _mapper.Map<TChallengeItem>(dto);
                if (entity.Id<=0)
                {
                    _context.TChallengeItems.Add(entity);
                }
                else
                {
                    var updateproject = _context.TChallengeItems.Find(entity.Id);
                    updateproject.ChallengeId = entity.ChallengeId;
                    updateproject.Question = entity.Question;
                    updateproject.Evidential = entity.Evidential;
                    updateproject.Law = entity.Law;
                    updateproject.Sort = entity.Sort;
                    updateproject.Lawcoment = entity.Lawcoment;
                    updateproject.Questionname = entity.Questionname;
                }
                _context.SaveChanges();
                resultEntity.ReturnID = entity.Id.ToString();
                resultEntity.Result = true;
            }
            catch (Exception ex)
            {
                resultEntity.Result = false;
                resultEntity.Message = "保存失败,请联系管理员";
            }
            return resultEntity;
        }
        public List<TComplaintletterDTO> GetListComplaintletter(string OrderId)
        {
            var entity = _context.TComplaintletters.Where(x => /*x.Status == 1 &&*/ x.OrderId == OrderId).ToList();
            var result = _mapper.Map<List<TComplaintletterDTO>>(entity);
            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
                            }
                   ).ToList();
            var request_info = listCode.Where(x => x.CodeTable == "t_challengeletter" && x.CodeField == "request_info").ToList();
            var shifou = listCode.Where(x => x.CodeTable == "system" && x.CodeField == "shifou").ToList();
            foreach (var complaintletterDTO in result)
            {
                var codeDataEntity = request_info.Where(x => x.CodeSn == complaintletterDTO.RequestInfo).FirstOrDefault();
                if (codeDataEntity != null)
                {
                    complaintletterDTO.RequestInfoName = codeDataEntity.Comments;
                }
                codeDataEntity = shifou.Where(x => x.CodeSn == complaintletterDTO.IsNotice).FirstOrDefault();
                if (codeDataEntity != null)
                {
                    complaintletterDTO.IsNoticeName = codeDataEntity.Comments;
                }
                codeDataEntity = shifou.Where(x => x.CodeSn == complaintletterDTO.IsResultnotice).FirstOrDefault();
                if (codeDataEntity != null)
                {
                    complaintletterDTO.IsResultnoticeName = codeDataEntity.Comments;
                }
            }
            return result;
        }
        public ResultEntity saveComplaintletter(TComplaintletterDTO dto)
        {
            ResultEntity resultEntity = new ResultEntity();
            try
            {
                var entity = _mapper.Map<TComplaintletter>(dto);
                if (String.IsNullOrEmpty(entity.Id))
                {
                    entity.Id = Guid.NewGuid().ToString();
                    dto.Id = entity.Id;
                    _context.TComplaintletters.Add(entity);
                }
                else
                {
                    var updateproject = _context.TComplaintletters.Find(entity.Id);
                    updateproject.PrintNum = entity.PrintNum;
                    updateproject.OrderId = entity.OrderId;
                    updateproject.TsrId = entity.TsrId;
                    updateproject.TsrName = entity.TsrName;
                    updateproject.TsrAddress = entity.TsrAddress;
                    updateproject.TsrPostcode = entity.TsrPostcode;
                    updateproject.TsrCorporation = entity.TsrCorporation;
                    updateproject.TsrPhone = entity.TsrPhone;
                    updateproject.SqdbId = entity.SqdbId;
                    updateproject.SqdbName = entity.SqdbName;
                    updateproject.SqdbPhone = entity.SqdbPhone;
                    updateproject.SqdbAddress = entity.SqdbAddress;
                    updateproject.SqdbPostcode = entity.SqdbPostcode;
                    updateproject.GysId = entity.GysId;
                    updateproject.GysName = entity.GysName;
                    updateproject.GysAddress = entity.GysAddress;
                    updateproject.GysPostcode = entity.GysPostcode;
                    updateproject.GysContacts = entity.GysContacts;
                    updateproject.GysPhone = entity.GysPhone;
                    updateproject.XmId = entity.XmId;
                    updateproject.XmName = entity.XmName;
                    updateproject.XmCode = entity.XmCode;
                    updateproject.XmPackage = entity.XmPackage;
                    updateproject.PurchaserName = entity.PurchaserName;
                    updateproject.Agency = entity.Agency;
                    updateproject.IsNotice = entity.IsNotice;
                    updateproject.NoticeDate = entity.NoticeDate;
                    updateproject.ChallengeDate = entity.ChallengeDate;
                    updateproject.Questioned = entity.Questioned;
                    updateproject.Respondent = entity.Respondent;
                    updateproject.RespondDate = entity.RespondDate;
                    updateproject.IsResultnotice = entity.IsResultnotice;
                    updateproject.ResultnoticeDate = entity.ResultnoticeDate;
                    updateproject.DocumentsDate = entity.DocumentsDate;
                    updateproject.RequestInfo = entity.RequestInfo;
                    updateproject.Status = entity.Status;
                    updateproject.Modifier = entity.Modifier;
                    updateproject.Modifytime = entity.Modifytime;
                }
                _context.SaveChanges();
                resultEntity.ReturnID = entity.Id;
                resultEntity.Result = true;
            }
            catch (Exception ex)
            {
                resultEntity.Result = false;
                resultEntity.Message = "保存失败,请联系管理员";
            }
            return resultEntity;
        }
        public List<TComplaintItemDTO> GetListComplaintItem(string ComplaintId)
        {
            var entity = _context.TComplaintItems.Where(x => x.ComplaintId == ComplaintId).OrderBy(x => x.Sort).ToList();
            var result = _mapper.Map<List<TComplaintItemDTO>>(entity);
            var question = (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
                            }
                 ).Where(x => x.CodeTable == "t_challenge_items" && x.CodeField == "question").ToList();
            var law = (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
                       }
                 ).Where(x => x.CodeTable == "t_complaint_items" && x.CodeField == "law").ToList();
            var falv = (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
                        }
               ).Where(x => x.CodeTable == "expert_test_topicjiexi" && x.CodeField == "falv").ToList();
            foreach (var complaintItemDTO in result)
            {
                var codeDataEntity = question.Where(x => x.CodeSn == complaintItemDTO.Question).FirstOrDefault();
                if (codeDataEntity != null)
                {
                    complaintItemDTO.QuestionName = codeDataEntity.Comments;
                }
                codeDataEntity = law.Where(x => x.CodeSn == complaintItemDTO.Law).FirstOrDefault();
                if (codeDataEntity != null)
                {
                    complaintItemDTO.LawName = codeDataEntity.Comments;
                    complaintItemDTO.Lawcoment = codeDataEntity.Contents;
                    codeDataEntity = falv.Where(x => x.CodeSn == complaintItemDTO.LawName).FirstOrDefault();
                    if (codeDataEntity != null)
                    {
                        complaintItemDTO.LawName = codeDataEntity.Comments;
                    }
                }
            }
            return result;
        }
        public ResultEntity saveComplaintItem(TComplaintItemDTO dto)
        {
            ResultEntity resultEntity = new ResultEntity();
            try
            {
                var entity = _mapper.Map<TComplaintItem>(dto);
                if (entity.Id <= 0)
                {
                    _context.TComplaintItems.Add(entity);
                }
                else
                {
                    var updateproject = _context.TComplaintItems.Find(entity.Id);
                    updateproject.ComplaintId = entity.ComplaintId;
                    updateproject.Question = entity.Question;
                    updateproject.Evidential = entity.Evidential;
                    updateproject.Law = entity.Law;
                    updateproject.Sort = entity.Sort;
                    updateproject.Lawcoment = entity.Lawcoment;
                    updateproject.Questionname = entity.Questionname;
                }
                _context.SaveChanges();
                resultEntity.ReturnID = entity.Id.ToString();
                resultEntity.Result = true;
            }
            catch (Exception ex)
            {
                resultEntity.Result = false;
                resultEntity.Message = "保存失败,请联系管理员";
            }
            return resultEntity;
        }
        public List<TComplaintRespondentDTO> GetListComplaintRespondent(string ComplaintId)
        {
            var entity = _context.TComplaintRespondents.Where(x => x.ComplaintId == ComplaintId).OrderBy(x => x.Sort).ToList();
            var result = _mapper.Map<List<TComplaintRespondentDTO>>(entity);
            return result;
        }
        public ResultEntity saveComplaintRespondent(TComplaintRespondentDTO dto)
        {
            ResultEntity resultEntity = new ResultEntity();
            try
            {
                var entity = _mapper.Map<TComplaintRespondent>(dto);
                if (entity.Id <= 0)
                {
                    _context.TComplaintRespondents.Add(entity);
                }
                else
                {
                    var updateproject = _context.TComplaintRespondents.Find(entity.Id);
                    updateproject.ComplaintId = entity.ComplaintId;
                    updateproject.Respondent = entity.Respondent;
                    updateproject.Address = entity.Address;
                    updateproject.Postcode = entity.Postcode;
                    updateproject.Contacts = entity.Contacts;
                    updateproject.Phone = entity.Phone;
                    updateproject.Sort = entity.Sort;
                }
                _context.SaveChanges();
                resultEntity.ReturnID = entity.Id.ToString();
                resultEntity.Result = true;
            }
            catch (Exception ex)
            {
                resultEntity.Result = false;
                resultEntity.Message = "保存失败,请联系管理员";
            }
            return resultEntity;
        }
        public List<TComplaintGongyingshangDTO> GetListComplaintGongyingshang(string ComplaintId)
        {
            var entity = _context.TComplaintGongyingshangs.Where(x => x.ComplaintId == ComplaintId).OrderBy(x => x.Sort).ToList();
            var result = _mapper.Map<List<TComplaintGongyingshangDTO>>(entity);
            return result;
        }
        public ResultEntity saveComplaintGongyingshang(TComplaintGongyingshangDTO dto)
        {
            ResultEntity resultEntity = new ResultEntity();
            try
            {
                var entity = _mapper.Map<TComplaintGongyingshang>(dto);
                if (entity.Id <= 0)
                {
                    _context.TComplaintGongyingshangs.Add(entity);
                }
                else
                {
                    var updateproject = _context.TComplaintGongyingshangs.Find(entity.Id);
                    updateproject.ComplaintId = entity.ComplaintId;
                    updateproject.Gongytingshang = entity.Gongytingshang;
                    updateproject.Dizhi = entity.Dizhi;
                    updateproject.Youbian = entity.Youbian;
                    updateproject.Lianxiren = entity.Lianxiren;
                    updateproject.Lianxidianhua = entity.Lianxidianhua;
                    updateproject.Sort = entity.Sort;
                }
                _context.SaveChanges();
                resultEntity.ReturnID = entity.Id.ToString();
                resultEntity.Result = true;
            }
            catch (Exception ex)
            {
                resultEntity.Result = false;
                resultEntity.Message = "保存失败,请联系管理员";
            }
            return resultEntity;
        }
        public List<TComplaintShouquandaibiaoDTO> GetListComplaintShouquandaibiao(string ComplaintId)
        {
            var entity = _context.TComplaintShouquandaibiaos.Where(x => x.ComplaintId == ComplaintId).OrderBy(x=>x.Sort).ToList();
            var result = _mapper.Map<List<TComplaintShouquandaibiaoDTO>>(entity);
            return result;
        }
        public ResultEntity saveComplaintShouquandaibiao(TComplaintShouquandaibiaoDTO dto)
        {
            ResultEntity resultEntity = new ResultEntity();
            try
            {
                var entity = _mapper.Map<TComplaintShouquandaibiao>(dto);
                if (entity.Id <= 0)
                {
                    _context.TComplaintShouquandaibiaos.Add(entity);
                }
                else
                {
                    var updateproject = _context.TComplaintShouquandaibiaos.Find(entity.Id);
                    updateproject.ComplaintId = entity.ComplaintId;
                    updateproject.Shouquandaibiao = entity.Shouquandaibiao;
                    updateproject.Dizhi = entity.Dizhi;
                    updateproject.Youbian = entity.Youbian;
                    updateproject.Lianxidianhua = entity.Lianxidianhua;
                    updateproject.Sort = entity.Sort;
                }
                _context.SaveChanges();
                resultEntity.ReturnID = entity.Id.ToString();
                resultEntity.Result = true;
            }
            catch (Exception ex)
            {
                resultEntity.Result = false;
                resultEntity.Message = "保存失败,请联系管理员";
            }
            return resultEntity;
        }
        /// <summary>
        /// 删除质疑函子表
        /// </summary>
        /// <returns></returns>
        public ResultEntity deleteChallengeItem(string ChallengeId)
        {
            ResultEntity result = new ResultEntity();
            result.Result = true;
            var models = _context.TChallengeItems.Where(x => x.ChallengeId == ChallengeId).ToList(); ;
            foreach(var challengeItem in models)
            {
                _context.TChallengeItems.Remove(challengeItem);
            }
            _context.SaveChanges();
            return result;
        }
        /// <summary>
        /// 删除投诉书子表
        /// </summary>
        /// <returns></returns>
        public ResultEntity deleteComplaintItem(string ComplaintId)
        {
            ResultEntity result = new ResultEntity();
            result.Result = true;
            var models = _context.TComplaintItems.Where(x => x.ComplaintId == ComplaintId).ToList(); ;
            foreach (var complaintItem in models)
            {
                _context.TComplaintItems.Remove(complaintItem);
            }
            _context.SaveChanges();
            return result;
        }
        /// <summary>
        /// 删除被投诉人子表
        /// </summary>
        /// <returns></returns>
        public ResultEntity deleteComplaintRespondent(string ComplaintId)
        {
            ResultEntity result = new ResultEntity();
            result.Result = true;
            var models = _context.TComplaintRespondents.Where(x => x.ComplaintId == ComplaintId).ToList(); ;
            foreach (var complaintRespondent in models)
            {
                _context.TComplaintRespondents.Remove(complaintRespondent);
            }
            _context.SaveChanges();
            return result;
        }
        /// <summary>
        /// 删除相关供应商子表
        /// </summary>
        /// <returns></returns>
        public ResultEntity deleteComplaintGongyingshang(string ComplaintId)
        {
            ResultEntity result = new ResultEntity();
            result.Result = true;
            var models = _context.TComplaintGongyingshangs.Where(x => x.ComplaintId == ComplaintId).ToList(); ;
            foreach (var complaintGongyingshang in models)
            {
                _context.TComplaintGongyingshangs.Remove(complaintGongyingshang);
            }
            _context.SaveChanges();
            return result;
        }
        /// <summary>
        /// 删除相关供应商子表
        /// </summary>
        /// <returns></returns>
        public ResultEntity deleteComplaintShouquandaibiao(string ComplaintId)
        {
            ResultEntity result = new ResultEntity();
            result.Result = true;
            var models = _context.TComplaintShouquandaibiaos.Where(x => x.ComplaintId == ComplaintId).ToList(); ;
            foreach (var complaintShouquandaibiao in models)
            {
                _context.TComplaintShouquandaibiaos.Remove(complaintShouquandaibiao);
            }
            _context.SaveChanges();
            return result;
        }
        public ResultDataEntity<CooperOrderDTO> SearchByPagingWenshu(CooperOrderDTOSearch searchEntity)
        {
            ResultDataEntity<CooperOrderDTO> data = new ResultDataEntity<CooperOrderDTO>();
            List<CooperOrderDTO> list = new List<CooperOrderDTO>();
            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 XdTimestart = DateTime.Now;
            DateTime XdTimeend = DateTime.Now;
            if (!string.IsNullOrWhiteSpace(searchEntity.XdTime))
            {
                string[] XdTimes = searchEntity.XdTime.Split("|");
                DateTime.TryParse(XdTimes[0], out XdTimestart);
                DateTime.TryParse(XdTimes[1], out XdTimeend);
                XdTimeend = XdTimeend.AddDays(1);
            }
            var query2 = (from a in _context.CooperOrders
                          join b in _context.TChallengeletters
                      on a.Id equals b.OrderId
                          join g in _context.CooperatecustomCustomers.Where(x => x.RecStatus == "A")
                           on a.Khdw equals g.Id
                          into gsss
                          from ggg in gsss.DefaultIfEmpty()
                          join l in _context.FiOrderrecievemoneys.Where(x => x.RecStatus == "A").GroupBy(q => new { q.OrderId }).Select(q => new
                          {
                              OrderId = q.Key.OrderId,
                              YishouMoney = q.Sum(x => x.Recievemoney),
                          }
                           )
                          on a.Id equals l.OrderId
                         into lsss
                          from lll in lsss.DefaultIfEmpty()
                      //    join d in listCode.Where(x => x.CodeTable == "t_challengeletter" && x.CodeField == "status")
                      //on b.Status equals int.Parse(d.CodeSn)
                      //into dsss
                      //    from ddd in dsss.DefaultIfEmpty()
                          where a.RecStatus == "A" && a.OrderType1 == "代拟质疑函"
                          && (string.IsNullOrWhiteSpace(searchEntity.XdTime) || (b.Createtime >= XdTimestart && b.Createtime <= XdTimeend))
                            && (string.IsNullOrWhiteSpace(searchEntity.Wenshuleixing) || a.OrderType1 == searchEntity.Wenshuleixing.Trim())
                              && (string.IsNullOrWhiteSpace(searchEntity.XmName) || b.XmName.Contains(searchEntity.XmName.Trim()))
                               && (string.IsNullOrWhiteSpace(searchEntity.XmCode) || b.XmCode.Contains(searchEntity.XmCode.Trim()))
                                 && (string.IsNullOrWhiteSpace(searchEntity.PurchaserName) || b.PurchaserName.Contains(searchEntity.PurchaserName.Trim()))
                                     //&& (string.IsNullOrWhiteSpace(searchEntity.Agency) || b.Agency.Contains(searchEntity.Agency.Trim()))
                                     && (string.IsNullOrWhiteSpace(searchEntity.KhdwName) || ggg.Name.Contains(searchEntity.KhdwName.Trim()))
                                     && (searchEntity.Status <= 0 || b.Status == searchEntity.Status)
                          select new CooperOrderDTO
                          {
                              Id = a.Id,
                              XmCode = b.XmCode,
                              XmName = b.XmName,
                              PurchaserName = b.PurchaserName,
                              Agency = "",
                              KhdwName = ggg.Name,
                              XdTime = a.Createtime,
                              XdTimeName = a.Createtime.ToString("yyyy-MM-dd"),
                              YishouMoney = lll.YishouMoney ?? 0,
                              WeishouMoney = (a.Money ?? 0) /*- (a.Youhui ?? 0)*/ - (lll.YishouMoney ?? 0),
                              OrderType1 = a.OrderType1,
                              Status = b.Status.ToString(),
                              Modifytime = b.Modifytime.Value,
                              //StatusName = ddd.Comments
                          }
                ).ToList();
               var query1 =(from a in _context.CooperOrders
                       join b in _context.TComplaintletters
                       on a.Id equals b.OrderId
                       join g in _context.CooperatecustomCustomers.Where(x => x.RecStatus == "A")
                        on a.Khdw equals g.Id
                       into gsss
                       from ggg in gsss.DefaultIfEmpty()
                       join l in _context.FiOrderrecievemoneys.Where(x => x.RecStatus == "A").GroupBy(q => new { q.OrderId }).Select(q => new
                       {
                           OrderId = q.Key.OrderId,
                           YishouMoney = q.Sum(x => x.Recievemoney),
                       }
                        )
                       on a.Id equals l.OrderId
                      into lsss
                       from lll in lsss.DefaultIfEmpty()
                       where a.RecStatus == "A" && a.OrderType1 == "代拟投诉书"
                       && (string.IsNullOrWhiteSpace(searchEntity.XdTime) || (b.Createtime >= XdTimestart && b.Createtime <= XdTimeend))
                         && (string.IsNullOrWhiteSpace(searchEntity.Wenshuleixing) || a.OrderType1 == searchEntity.Wenshuleixing.Trim())
                          && (string.IsNullOrWhiteSpace(searchEntity.XmCode) || b.XmCode.Contains(searchEntity.XmCode.Trim()))
                           && (string.IsNullOrWhiteSpace(searchEntity.XmName) || b.XmName.Contains(searchEntity.XmName.Trim()))
                              && (string.IsNullOrWhiteSpace(searchEntity.PurchaserName) || b.PurchaserName.Contains(searchEntity.PurchaserName.Trim()))
                                && (string.IsNullOrWhiteSpace(searchEntity.Agency) || b.Agency.Contains(searchEntity.Agency.Trim()))
                                  && (string.IsNullOrWhiteSpace(searchEntity.KhdwName) || ggg.Name.Contains(searchEntity.KhdwName.Trim()))
                                  && (searchEntity.Status <= 0 || b.Status == searchEntity.Status)
                       select new CooperOrderDTO
                       {
                           Id = a.Id,
                           XmCode = b.XmCode,
                           XmName = b.XmName,
                           PurchaserName = b.PurchaserName,
                           Agency = b.Agency,
                           KhdwName = ggg.Name,
                           XdTime = b.Createtime.Value,
                           XdTimeName = b.Createtime.Value.ToString("yyyy-MM-dd"),
                           YishouMoney = lll.YishouMoney ?? 0,
                           WeishouMoney = (a.Money ?? 0) /*- (a.Youhui ?? 0)*/ - (lll.YishouMoney ?? 0),
                           OrderType1 = a.OrderType1,
                           Status = b.Status.ToString(),
                           Modifytime = b.Modifytime.Value,
                       }
                ).ToList();
            query2.AddRange(query1);
            var query = query2.Where(x => x.WeishouMoney <= 0).OrderByDescending(x => x.Modifytime).ToList();
        
            //if (searchEntity.totalrows == 0)
            searchEntity.totalrows = query.Count();
            var lianlist = query.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList();
            foreach (var cooperOrderDTO in lianlist)
            {
              var  codeDataEntity  =  listCode.Where(x => x.CodeTable == "t_challengeletter" && x.CodeField == "status" && x.CodeSn == cooperOrderDTO.Status.ToString()).FirstOrDefault();
                if (codeDataEntity != null) {
                    cooperOrderDTO.StatusName = codeDataEntity.Comments;
                }
            }
            data.LoadData(searchEntity, lianlist);
            return data;
        }
        public List<CooperOrderDTO> GetListComplaintsDisputeCount(string huiyuanid)
        {
            var query = (from a in _zcUserInfoN_dbContext.UsergGadeRoles
                         join b in _zcUserInfoN_dbContext.GadeRoles
                         on a.UserGadeRolesId equals b.Id
                         where a.UserId == Guid.Parse(huiyuanid)
                         select new CooperOrderDTO
                         {
                             Id = a.UserId.ToString(),
                             AnswerRoles = b.AnswerRoles,
                             XiaocaiKeTang = b.XiaocaiKeTang,
                             XiaoCaiQandA = b.XiaoCaiQandA,
                             Discount = b.Discount,
                             BiddingDocumentsCount = b.BiddingDocumentsCount,
                             ComplaintsDisputeCount = b.ComplaintsDisputeCount,
                             PerformanceDisputeCount = b.PerformanceDisputeCount,
                             BiddingDocumentsCountused = a.BiddingDocumentsCount,
                             ComplaintsDisputeCountused = a.ComplaintsDisputeCount,
                             PerformanceDisputeCountused = a.PerformanceDisputeCount,
                         }
                         ).ToList();
            return query;
        }
        public FrameworkUser GetFrameworkUsers(string ID)
        {
            var entity = _zcUserInfoN_dbContext.FrameworkUsers.Find(new Guid(ID));
            return entity;
        }
        public List<TChallengeRequestInfoDTO> GetListChallengeRequestInfo(string ChallengeId)
        {
            var entity = _context.TChallengeRequestInfos.Where(x => x.ChallengeId == ChallengeId).OrderBy(x => x.Id).ToList();
            var result = _mapper.Map<List<TChallengeRequestInfoDTO>>(entity);
            var request_info = (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
                            }
                   ).Where(x => x.CodeTable == "t_challengeletter" && x.CodeField == "request_info").ToList();
            foreach (var challengeItemDTO in result)
            {
                var codeDataEntity = request_info.Where(x => x.CodeSn == challengeItemDTO.RequestInfo).FirstOrDefault();
                if (codeDataEntity != null)
                {
                    challengeItemDTO.RequestInfoNameName = codeDataEntity.Comments;
                }
            }
            return result;
        }
        public ResultEntity saveChallengeRequestInfo(TChallengeRequestInfoDTO dto)
        {
            ResultEntity resultEntity = new ResultEntity();
            try
            {
                var entity = _mapper.Map<TChallengeRequestInfo>(dto);
                if (entity.Id <= 0)
                {
                    _context.TChallengeRequestInfos.Add(entity);
                }
                else
                {
                    var updateproject = _context.TChallengeRequestInfos.Find(entity.Id);
                    updateproject.ChallengeId = entity.ChallengeId;
                    updateproject.RequestInfo = entity.RequestInfo;
                    updateproject.RequestInfoname = entity.RequestInfoname;
                }
                _context.SaveChanges();
                resultEntity.ReturnID = entity.Id.ToString();
                resultEntity.Result = true;
            }
            catch (Exception ex)
            {
                resultEntity.Result = false;
                resultEntity.Message = "保存失败,请联系管理员";
            }
            return resultEntity;
        }
        /// <summary>
        /// 删除质疑函子表
        /// </summary>
        /// <returns></returns>
        public ResultEntity deleteChallengeRequestInfo(string ChallengeId)
        {
            ResultEntity result = new ResultEntity();
            result.Result = true;
            var models = _context.TChallengeRequestInfos.Where(x => x.ChallengeId == ChallengeId).ToList(); ;
            foreach (var challengeItem in models)
            {
                _context.TChallengeRequestInfos.Remove(challengeItem);
            }
            _context.SaveChanges();
            return result;
        }
    }
}