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 AdmBreakPrecedentService: IAdmBreakPrecedentService { private readonly zhengcaioaContext _context; private readonly IMapper _mapper; public AdmBreakPrecedentService(zhengcaioaContext context, IMapper mapper) { _context = context; _mapper = mapper; } public ResultEntity save(AdmBreakPrecedentDTO dto) { ResultEntity resultEntity = new ResultEntity(); try { var entity = _mapper.Map(dto); if (String.IsNullOrEmpty(entity.Id)) { entity.Id = Guid.NewGuid().ToString(); _context.AdmBreakPrecedents.Add(entity); } else { var updateproject = _context.AdmBreakPrecedents.Find(entity.Id); updateproject.BreakTime = entity.BreakTime; updateproject.UserId = entity.UserId; updateproject.BreakPrecedent = entity.BreakPrecedent; updateproject.BreakThing = entity.BreakThing; updateproject.Chufajine = entity.Chufajine; updateproject.QianfaUserId = entity.QianfaUserId; 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 AdmBreakPrecedentDTO Get(string id) { var entity = _context.AdmBreakPrecedents.Find(id); if (entity.RecStatus != "A") { entity = new AdmBreakPrecedent(); } var result = _mapper.Map(entity); return result; } public ResultDataEntity SearchByPaging(AdmBreakPrecedentDTOSearch searchEntity) { ResultDataEntity data = new ResultDataEntity(); List list = new List(); DateTime BreakTimestart = DateTime.Now; DateTime BreakTimeend = DateTime.Now; if (!string.IsNullOrWhiteSpace(searchEntity.BreakTime)) { string[] BreakTimes = searchEntity.BreakTime.Split("|"); DateTime.TryParse(BreakTimes[0], out BreakTimestart); DateTime.TryParse(BreakTimes[1], out BreakTimeend); //BreakTimeend = BreakTimeend.AddDays(1); } ///AdmBreakPrecedents var query = (from a in _context.AdmBreakPrecedents join b in _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A") on a.UserId equals b.Id into bsssss from bbb in bsssss.DefaultIfEmpty() join k in _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A") on a.QianfaUserId equals k.Id into ksssss from kkk in ksssss.DefaultIfEmpty() join c in _context.HrDepts.Where(x => x.RecStatus == "A" && x.QiyongStatus == "A") on bbb.DeptId equals c.Id into csssss from ccc in csssss.DefaultIfEmpty() where a.RecStatus == "A" && (string.IsNullOrWhiteSpace(searchEntity.BreakTime) || (a.BreakTime >= BreakTimestart && a.BreakTime <= BreakTimeend)) && (string.IsNullOrWhiteSpace(searchEntity.DeptId) || bbb.DeptId == searchEntity.DeptId.Trim()) && (string.IsNullOrWhiteSpace(searchEntity.UserName) || bbb.UserName.Contains(searchEntity.UserName.Trim())) && (string.IsNullOrWhiteSpace(searchEntity.BreakThing) || a.BreakThing.Contains(searchEntity.BreakThing.Trim())) && (string.IsNullOrWhiteSpace(searchEntity.UserId) || a.UserId == searchEntity.UserId.Trim()) select new AdmBreakPrecedentDTO { Id = a.Id, BreakTime = a.BreakTime, BreakTimeName = a.BreakTime.ToString("yyyy-MM-dd"), UserId = a.UserId, UserName = bbb.UserName, BreakPrecedent = a.BreakPrecedent, BreakThing = a.BreakThing, Chufajine = a.Chufajine ?? 0, QianfaUserId = a.QianfaUserId, QianfaUserName = kkk.UserName, DeptId = bbb.DeptId, DeptName = ccc.DeptName, Creater = a.Creater, Createtime = a.Createtime, RecStatus = a.RecStatus, Modifier = a.Modifier, Modifytime = a.Modifytime, } ).OrderByDescending(x => x.BreakTime).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.AdmBreakPrecedents.Find(id); if (model != null) { model.RecStatus = "D"; model.Modifier = userid; model.Modifytime = DateTime.Now; _context.SaveChanges(); } return result; } public List GetList(string userid, DateTime datemin, DateTime datemax) { var entity = _context.AdmBreakPrecedents.Where(x=>x.RecStatus=="A" && x.UserId == userid && x.BreakTime >= datemin && x.BreakTime < datemax); var result = _mapper.Map>(entity); return result; } public ResultDataEntity SearchByPagingGoods(AdmBreakPrecedentDTOSearch searchEntity) { ResultDataEntity data = new ResultDataEntity(); List list = new List(); DateTime BreakTimestart = DateTime.Now; DateTime BreakTimeend = DateTime.Now; if (!string.IsNullOrWhiteSpace(searchEntity.BreakTime)) { string[] BreakTimes = searchEntity.BreakTime.Split("|"); DateTime.TryParse(BreakTimes[0], out BreakTimestart); DateTime.TryParse(BreakTimes[1], out BreakTimeend); BreakTimeend = BreakTimeend.AddDays(1); } ///AdmBreakPrecedents var query = (from a in _context.AdmAskGoods join b in _context.AdmGoodsManages on a.GoodsId equals b.Id into bsssss from bbb in bsssss.DefaultIfEmpty() join k in _context.PltUsers on a.Creater equals k.Id into ksssss from kkk in ksssss.DefaultIfEmpty() join c in _context.HrDepts on kkk.DeptId equals c.Id into csssss from ccc in csssss.DefaultIfEmpty() where a.RecStatus == "A" && a.ShenpiStatus == "A" && (string.IsNullOrWhiteSpace(searchEntity.BreakTime) || (a.Createtime >= BreakTimestart && a.Createtime <= BreakTimeend)) && (string.IsNullOrWhiteSpace(searchEntity.Goods) || bbb.GoodsName.Contains(searchEntity.Goods.Trim())) && (string.IsNullOrWhiteSpace(searchEntity.UserId) || a.Creater == searchEntity.UserId.Trim()) select new AdmAskGoodDTO { Id = a.Id, Createtime = a.Createtime, CreatetimeName = a.Createtime.ToString("yyyy-MM-dd"), GoodsId = a.GoodsId, GoodsName = bbb.GoodsName, Shuliang = a.Shuliang, ShuliangName = a.Shuliang.HasValue? a.Shuliang.Value.ToString("F2"):"0", Creater = a.Creater, RecStatus = a.RecStatus, Modifier = a.Modifier, Modifytime = a.Modifytime, } ).OrderByDescending(x => x.Createtime).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; } } }