using System; using System.Collections.Generic; using System.Linq; using System.Text; using AutoMapper; using DTO; using IServices; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.EntityFrameworkCore; using zhengcaioa.Models; namespace Services { public class CooperOrderService: ICooperOrderService { private readonly zhengcaioaContext _context; private readonly IMapper _mapper; public CooperOrderService(zhengcaioaContext context, IMapper mapper) { _context = context; _mapper = mapper; } public ResultEntity save(CooperOrderDTO dto) { ResultEntity resultEntity = new ResultEntity(); try { var entity = _mapper.Map(dto); if (String.IsNullOrEmpty(entity.Id)) { entity.Id = Guid.NewGuid().ToString(); var datestreing = DateTime.Now.ToString("yyyyMMdd"); var OrderNo = _context.CooperOrders.Where(x => x.OrderNo.Contains(datestreing)).Max(x=>x.OrderNo); if (string.IsNullOrEmpty(OrderNo)) { entity.OrderNo = datestreing+ 1.ToString().PadLeft(3, '0'); } else { entity.OrderNo = datestreing + (int.Parse(OrderNo.Substring(OrderNo.Length - 3))+1).ToString().PadLeft(3, '0'); } //entity.ShouliStatus = ""; //entity.ChedanStatus = ""; //entity.HuifangStatus = ""; //entity.PingjiaStatus = ""; _context.CooperOrders.Add(entity); } else { var updateproject = _context.CooperOrders.Find(entity.Id); //updateproject.XdTime = entity.XdTime; updateproject.OrderNo = entity.OrderNo; updateproject.Khdw = entity.Khdw; updateproject.OrderType = entity.OrderType; updateproject.OrderPro = entity.OrderPro; updateproject.OrderNum = entity.OrderNum; updateproject.Price = entity.Price; updateproject.Money = entity.Money; updateproject.Shr = entity.Shr; updateproject.ShrAddress = entity.ShrAddress; updateproject.ShrTel = entity.ShrTel; updateproject.Remark = entity.Remark; updateproject.OrderType1 = entity.OrderType1; updateproject.OrderType2 = entity.OrderType2; updateproject.ShouliStatus = entity.ShouliStatus; updateproject.Shoulier = entity.Shoulier; updateproject.Shoulitime = entity.Shoulitime; updateproject.Songhuoer = entity.Songhuoer; updateproject.Songhuotime = entity.Songhuotime; updateproject.Wangonger = entity.Wangonger; updateproject.Wangongtime = entity.Wangongtime; updateproject.RecStatus = entity.RecStatus; 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 CooperOrderDTO Get(string id) { var entity = _context.CooperOrders.Find(id); if (entity.RecStatus != "A") { entity = new CooperOrder(); } var result = _mapper.Map(entity); return result; } public ResultDataEntity SearchByPaging(CooperOrderDTOSearch searchEntity) { ResultDataEntity data = new ResultDataEntity(); List list = new List(); var listCode = (from a in _context.SysCodeDtls join b in _context.SysCodes on a.CodeId equals b.Id where a.RecStatus == "A" && b.RecStatus == "A" select new CodeDataEntity() { CodeId = b.Id, CodeTable = b.CodeTable, CodeField = b.CodeField, CodeSn = a.CodeSn, Comments = a.Comments, Contents = a.Contents, RecStatus = a.RecStatus, Sort = a.Sort } ); DateTime 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 query = (from a in _context.CooperOrders 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 c in listCode.Where(x => x.CodeTable == "CooperOrder" && x.CodeField == "huifang_status") on a.HuifangStatus equals c.CodeSn into csss from ccc in csss.DefaultIfEmpty() join d in listCode.Where(x => x.CodeTable == "CooperOrder" && x.CodeField == "pingjia_status") on a.PingjiaStatus equals d.CodeSn into dsss from ddd in dsss.DefaultIfEmpty() join e in listCode.Where(x => x.CodeTable == "system" && x.CodeField == "shifou") on a.ChedanStatus equals e.CodeSn into esssss from eee in esssss.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 g in _context.CooperatecustomCustomers.Where(x => x.RecStatus == "A" ) on a.Khdw equals g.Id into gsss from ggg in gsss.DefaultIfEmpty() join h in _context.Projects.Where(x => x.RecStatus == "A") on a.OrderPro equals h.Id into hsss from hhh in hsss.DefaultIfEmpty() join i in listCode.Where(x => x.CodeTable == "system" && x.CodeField == "shifou") on a.WangongStatus equals i.CodeSn into isssss from iii in isssss.DefaultIfEmpty() join j in listCode.Where(x => x.CodeTable == "system" && x.CodeField == "shifou") on a.SonghuoStatus equals j.CodeSn into jsssss from jjj in jsssss.DefaultIfEmpty() join k in _context.Oayouhuis.Where(x => x.Recstatus == "A") on a.Id equals k.CooperOrderId into ksssss from kkk in ksssss.DefaultIfEmpty() where a.RecStatus == "A" && (string.IsNullOrWhiteSpace(searchEntity.XdTime) || (a.XdTime >= XdTimestart && a.XdTime <= XdTimeend)) && (string.IsNullOrWhiteSpace(searchEntity.Ywjl) || ggg.Ywjl == searchEntity.Ywjl.Trim()) && (string.IsNullOrWhiteSpace(searchEntity.OrderType) || a.OrderType == searchEntity.OrderType.Trim()) && (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.HuifangStatus) || a.HuifangStatus.Contains(searchEntity.HuifangStatus.Trim())) && (string.IsNullOrWhiteSpace(searchEntity.PingjiaStatus) || a.PingjiaStatus.Contains(searchEntity.PingjiaStatus.Trim())) && (string.IsNullOrWhiteSpace(searchEntity.Creater) || a.Creater == searchEntity.Creater.Trim()) && (string.IsNullOrWhiteSpace(searchEntity.ShouliStatus) || a.ShouliStatus == searchEntity.ShouliStatus.Trim()) && (string.IsNullOrWhiteSpace(searchEntity.ChedanStatus) || a.ChedanStatus == searchEntity.ChedanStatus.Trim()) && (string.IsNullOrWhiteSpace(searchEntity.WangongStatus) || a.WangongStatus == searchEntity.WangongStatus.Trim()) && (string.IsNullOrWhiteSpace(searchEntity.SonghuoStatus) || a.SonghuoStatus == searchEntity.SonghuoStatus.Trim()) && (string.IsNullOrWhiteSpace(searchEntity.HuifangStatussss) || a.HuifangStatus == searchEntity.HuifangStatussss.Trim()) select new CooperOrderDTO { Id = a.Id, XdTime = a.XdTime, XdTimeName = a.XdTime.ToString("yyyy-MM-dd"), OrderNo = a.OrderNo, Khdw = a.Khdw, KhdwName = ggg.Name, OrderType = a.OrderType, OrderTypeName = fff.Comments, OrderPro = a.OrderPro, OrderProName = hhh.Name, OrderNum = a.OrderNum, Price = a.Price, Money = a.Money, Shr = a.Shr, ShrAddress = a.ShrAddress, ShrTel = a.ShrTel, Remark = a.Remark, Creater = a.Creater, Createtime = a.Createtime, RecStatus = a.RecStatus, Modifier = a.Modifier, Modifytime = a.Modifytime, ShouliStatus = a.ShouliStatus, ShouliStatusName = bbb.Comments, Shoulier = a.Shoulier, Shoulitime = a.Shoulitime, ChedanStatus = a.ChedanStatus, ChedanStatusName = eee.Comments, Chedaner = a.Chedaner, Chedantime = a.Chedantime, Chedan = a.Chedan, HuifangStatus = a.HuifangStatus, HuifangStatusName = ccc.Comments, Huifanger = a.Huifanger, Huifangtime = a.Huifangtime, Huifangremark = a.Huifangremark, PingjiaStatus = a.PingjiaStatus, PingjiaStatusName = ddd.Comments, Pingjiaer = a.Pingjiaer, Pingjiatime =a.Pingjiatime, Youhui = a.Youhui, Youhuier = a.Youhuier, Youhuitime = a.Youhuitime, SonghuoStatusName = jjj.Comments, SonghuoStatus = a.SonghuoStatus, Songhuoer = a.Songhuoer, Songhuotime = a.Songhuotime, WangongStatusName = iii.Comments, WangongStatus = a.WangongStatus, Wangonger = a.Wangonger, Wangongtime = a.Wangongtime, YouhuiStatus = kkk.Id, OrderType1 = a.OrderType1, OrderType2 = a.OrderType2, } ).OrderByDescending(x => x.OrderNo).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; } /// /// 修改主表状态 /// /// 主id /// 用户 /// public ResultEntity ModifyStatus(string id, string userid) { ResultEntity result = new ResultEntity(); result.Result = true; var model = _context.CooperOrders.Find(id); if (model != null) { model.RecStatus = "D"; model.Modifier = userid; model.Modifytime = DateTime.Now; _context.SaveChanges(); } return result; } public ResultEntity shouli(CooperOrderDTO dto) { ResultEntity resultEntity = new ResultEntity(); try { var updateproject = _context.CooperOrders.Find(dto.Id); updateproject.ShouliStatus = dto.ShouliStatus; updateproject.Shoulier = dto.Shoulier; updateproject.Shoulitime = dto.Shoulitime; _context.SaveChanges(); resultEntity.ReturnID = dto.Id; resultEntity.Result = true; } catch (Exception ex) { resultEntity.Result = false; resultEntity.Message = "受理失败,请联系管理员"; } return resultEntity; } public ResultEntity Wangong(CooperOrderDTO dto) { ResultEntity resultEntity = new ResultEntity(); try { var updateproject = _context.CooperOrders.Find(dto.Id); updateproject.WangongStatus = dto.WangongStatus; updateproject.Wangonger = dto.Wangonger; updateproject.Wangongtime = dto.Wangongtime; _context.SaveChanges(); resultEntity.ReturnID = dto.Id; resultEntity.Result = true; } catch (Exception ex) { resultEntity.Result = false; resultEntity.Message = "完工失败,请联系管理员"; } return resultEntity; } public ResultEntity Songhuo(CooperOrderDTO dto) { ResultEntity resultEntity = new ResultEntity(); try { var updateproject = _context.CooperOrders.Find(dto.Id); updateproject.SonghuoStatus = dto.SonghuoStatus; updateproject.Songhuoer = dto.Songhuoer; updateproject.Songhuotime = dto.Songhuotime; _context.SaveChanges(); resultEntity.ReturnID = dto.Id; resultEntity.Result = true; } catch (Exception ex) { resultEntity.Result = false; resultEntity.Message = "送货失败,请联系管理员"; } return resultEntity; } public ResultEntity chedan(CooperOrderDTO dto) { ResultEntity resultEntity = new ResultEntity(); try { var updateproject = _context.CooperOrders.Find(dto.Id); updateproject.Chedaner = dto.Chedaner; updateproject.Chedantime = dto.Chedantime; updateproject.ChedanStatus = dto.ChedanStatus; updateproject.Chedan = dto.Chedan; updateproject.ShouliStatus = dto.ShouliStatus; _context.SaveChanges(); resultEntity.ReturnID = dto.Id; resultEntity.Result = true; } catch (Exception ex) { resultEntity.Result = false; resultEntity.Message = "撤单失败,请联系管理员"; } return resultEntity; } public ResultEntity huifang(CooperOrderDTO dto) { ResultEntity resultEntity = new ResultEntity(); try { var updateproject = _context.CooperOrders.Find(dto.Id); updateproject.Huifanger = dto.Huifanger; updateproject.Huifangtime = dto.Huifangtime; updateproject.HuifangStatus = dto.HuifangStatus; updateproject.Huifangremark = dto.Huifangremark; _context.SaveChanges(); resultEntity.ReturnID = dto.Id; resultEntity.Result = true; } catch (Exception ex) { resultEntity.Result = false; resultEntity.Message = "撤单失败,请联系管理员"; } return resultEntity; } public ResultEntity pingjia(CooperOrderDTO dto) { ResultEntity resultEntity = new ResultEntity(); try { var updateproject = _context.CooperOrders.Find(dto.Id); updateproject.Pingjiaer = dto.Pingjiaer; updateproject.Pingjiatime = dto.Pingjiatime; updateproject.PingjiaStatus = dto.PingjiaStatus; _context.SaveChanges(); resultEntity.ReturnID = dto.Id; resultEntity.Result = true; } catch (Exception ex) { resultEntity.Result = false; resultEntity.Message = "撤单失败,请联系管理员"; } return resultEntity; } public CooperOrderDTO Getprint(string id) { 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 } ); var query = (from a in _context.CooperOrders 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 c in listCode.Where(x => x.CodeTable == "CooperOrder" && x.CodeField == "huifang_status") on a.HuifangStatus equals c.CodeSn into csss from ccc in csss.DefaultIfEmpty() join d in listCode.Where(x => x.CodeTable == "CooperOrder" && x.CodeField == "pingjia_status") on a.PingjiaStatus equals d.CodeSn into dsss from ddd in dsss.DefaultIfEmpty() join e in listCode.Where(x => x.CodeTable == "system" && x.CodeField == "shifou") on a.ChedanStatus equals e.CodeSn into esssss from eee in esssss.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 g in _context.CooperatecustomCustomers.Where(x => x.RecStatus == "A") on a.Khdw equals g.Id into gsss from ggg in gsss.DefaultIfEmpty() join h in _context.Projects.Where(x => x.RecStatus == "A") on a.OrderPro equals h.Id into hsss from hhh in hsss.DefaultIfEmpty() join i in listCode.Where(x => x.CodeTable == "system" && x.CodeField == "shifou") on a.WangongStatus equals i.CodeSn into isssss from iii in isssss.DefaultIfEmpty() join j in listCode.Where(x => x.CodeTable == "system" && x.CodeField == "shifou") on a.SonghuoStatus equals j.CodeSn into jsssss from jjj in jsssss.DefaultIfEmpty() join k in _context.Oayouhuis.Where(x => x.Recstatus == "A") on a.Id equals k.CooperOrderId into ksssss from kkk in ksssss.DefaultIfEmpty() where a.RecStatus == "A" && a.Id == id select new CooperOrderDTO { Id = a.Id, XdTime = a.XdTime, XdTimeName = a.XdTime.ToString("yyyy-MM-dd"), OrderNo = a.OrderNo, Khdw = a.Khdw, KhdwName = ggg.Name, OrderType = a.OrderType, OrderTypeName = fff.Comments, OrderPro = a.OrderPro, OrderProName = hhh.Name, OrderNum = a.OrderNum, Price = a.Price, Money = a.Money, Shr = a.Shr, ShrAddress = a.ShrAddress, ShrTel = a.ShrTel, Remark = a.Remark, Creater = a.Creater, Createtime = a.Createtime, RecStatus = a.RecStatus, Modifier = a.Modifier, Modifytime = a.Modifytime, ShouliStatus = a.ShouliStatus, ShouliStatusName = bbb.Comments, Shoulier = a.Shoulier, Shoulitime = a.Shoulitime, ChedanStatus = a.ChedanStatus, ChedanStatusName = eee.Comments, Chedaner = a.Chedaner, Chedantime = a.Chedantime, Chedan = a.Chedan, HuifangStatus = a.HuifangStatus, HuifangStatusName = ccc.Comments, Huifanger = a.Huifanger, Huifangtime = a.Huifangtime, Huifangremark = a.Huifangremark, PingjiaStatus = a.PingjiaStatus, PingjiaStatusName = ddd.Comments, Pingjiaer = a.Pingjiaer, Pingjiatime = a.Pingjiatime, Youhui = a.Youhui, Youhuier = a.Youhuier, Youhuitime = a.Youhuitime, SonghuoStatusName = jjj.Comments, SonghuoStatus = a.SonghuoStatus, Songhuoer = a.Songhuoer, Songhuotime = a.Songhuotime, WangongStatusName = iii.Comments, WangongStatus = a.WangongStatus, Wangonger = a.Wangonger, Wangongtime = a.Wangongtime, YouhuiStatus = kkk.Id, OrderType1 = a.OrderType1, OrderType2 = a.OrderType2, } ).FirstOrDefault(); if (query==null|| query.RecStatus != "A") { query = new CooperOrderDTO(); } return query; } } }