using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Linq; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.IBLL.Quality; using WX.CRM.Model.Entity; namespace WX.CRM.BLL.Quality { public class QC_USERCHECK_BL : IQC_USERCHECK_Q { public List GetUserCheck(ref Pager pg, decimal? dismiss, DateTime? dismissStime, DateTime? dismissEtime, DateTime? entryStime, DateTime? entryEtime, DateTime? positveStime, DateTime? positveEtime, DateTime? qualityStime, DateTime? qualityEtime, decimal? status, string groupId, decimal userId) { using (crmContext db = new crmContext()) { var list = db.QC_USERCHECKMASTER.AsQueryable(); var list2 = db.QC_USERCHECKDETAIL.AsQueryable(); var inneruser_list = db.BAS_INNERUSER.AsQueryable(); list = list.Where(m => m.QUALITYTYPE == 50); if (userId > 0) { inneruser_list = inneruser_list.Where(m => m.PKID == userId); } else if (!string.IsNullOrEmpty(groupId)) { decimal[] _groupids = OperationUtil.ConvertToDecimal(groupId.Split(',')); var userIds = db.BAS_INNERUSERGROUP.Where(m => _groupids.Contains(m.GID.Value)).Select(m => m.INNERUSERID).ToArray(); inneruser_list = inneruser_list.Where(m => userIds.Contains(m.PKID)); } if (dismiss.HasValue) { inneruser_list = inneruser_list.Where(m => m.ISDISMISS == dismiss); } if (dismissStime.HasValue && dismissEtime.HasValue) { inneruser_list = inneruser_list.Where(m => m.DISMISSTIME >= dismissStime && m.DISMISSTIME <= dismissEtime); } if (entryStime.HasValue && entryEtime.HasValue) { inneruser_list = inneruser_list.Where(m => m.ENTRYDATE >= entryStime && m.ENTRYDATE <= entryEtime); } if (positveStime.HasValue && positveEtime.HasValue) { inneruser_list = inneruser_list.Where(m => m.POSITIVETIME >= positveStime && m.POSITIVETIME <= positveEtime); } if (status.HasValue) { list2 = list2.Where(m => m.QUALITYSTATUS == status); } if (qualityStime.HasValue && qualityEtime.HasValue) { list2 = list2.Where(m => m.QUALITYTIME > qualityStime && m.QUALITYTIME < qualityEtime); } var queryDataExt = (from a in list join b in list2 on a.MASTERID equals b.MASTERID join c in inneruser_list on a.EID equals c.EID select new QC_USERCHECK_EXTEND() { EID = c.EID, USERNAME = c.UNAME, GROUPNAME = b.GROUPNAME, ENTRYDATE = c.ENTRYDATE, POSITIVETIME = c.POSITIVETIME, DISMISSTIME = c.DISMISSTIME, QUALITYTIME = b.QUALITYTIME, QUALITYSTATUS = b.QUALITYSTATUS, QUALITYMEMO = b.QUALITYMEMO, QUALITYADVISE = b.QUALITYADVISE }); queryDataExt = queryDataExt.OrderByDescending(p => p.QUALITYTIME); PagerUtil.SetPager(ref queryDataExt, ref pg); return queryDataExt.ToList(); } } #region 质检数据更新 public void AddUserChecks(DateTime delCtime, DateTime DelEtime, List masterModels, List detailModels) { using (crmContext db = new crmContext()) { var delMasterModels = db.QC_USERCHECKMASTER.Where(p => p.CHECKDATE > delCtime && p.CHECKDATE < DelEtime); var delDetailModels = db.QC_USERCHECKDETAIL.Where(p => p.CHECKDATE > delCtime && p.CHECKDATE < DelEtime); foreach (var delModel in delMasterModels) { db.QC_USERCHECKMASTER.Attach(delModel); db.Entry(delModel).State = EntityState.Deleted; } foreach (var delModel in delDetailModels) { db.QC_USERCHECKDETAIL.Attach(delModel); db.Entry(delModel).State = EntityState.Deleted; } foreach (var model in masterModels) { model.QUALITYTIME = DateTime.SpecifyKind(model.QUALITYTIME, DateTimeKind.Utc); model.CTIME = DateTime.Now; db.QC_USERCHECKMASTER.Add(model); } foreach (var model in detailModels) { model.QUALITYTIME = DateTime.SpecifyKind(model.QUALITYTIME, DateTimeKind.Utc); model.CTIME = DateTime.Now; db.QC_USERCHECKDETAIL.Add(model); } db.SaveChanges(); } } #endregion } }