using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using WX.CRM.BLL.Application.UserComBox; using WX.CRM.BLL.Base; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.DAL.Wx; using WX.CRM.IBLL.Wx; using WX.CRM.Model.Entity; using WX.CRM.Model.MAP; using WX.CRM.Model.QueryMap; namespace WX.CRM.BLL.Wx { public class WX_AFTERSALES_BL : DbContextRepository, IWX_AFTERSALES { WX_SZZYORDER_DAL dal = new WX_SZZYORDER_DAL(); public List GetList(ref Pager pager, string resId, string contractCode, string szzyOrderId, decimal productId, decimal subProductId, decimal orderType, string stime, string etime, QueryUserComboDto usercomboDto, string orderStatus, string ostime, string oetime, string fcText) { using (var db = new crmContext()) { //var queryData = db.WX_SZZYORDER.AsQueryable(); var queryData = from o in db.WX_SZZYORDER.Where(p => p.ISOPEN == 1) join a in db.WX_AFTERSALES on o.RESID equals a.RESID join x in db.RES_CUSTOMERDETAIL on o.RESID equals x.RESID select new AfterSaleOrderView { WxSzzyorder = o, WxAftersales = a }; if (usercomboDto.userId.HasValue) { queryData = queryData.Where(m => m.WxAftersales.INNERUSERID == usercomboDto.userId.Value); } else if (!string.IsNullOrEmpty(usercomboDto.groupIds)) { var _groupids = OperationUtil.ConvertToDecimal(usercomboDto.groupIds.Split(',')); queryData = (from a in queryData join b in db.BAS_INNERUSERGROUP on a.WxAftersales.INNERUSERID equals b.INNERUSERID where _groupids.Contains(b.GID.Value) select a); } else if (!string.IsNullOrEmpty(usercomboDto.deptId)) { var depts = OperationUtil.ConvertToDecimal(usercomboDto.deptId.Split(',')); List ALLdeptIDS = new List(); List ALLgidS = new List(); UserServices userservices = new UserServices(); foreach (var item in depts) { List deptIDS = new List(); List gidS = new List(); userservices.GetAllDeptIDOrGidByDeptId(item, ref deptIDS, ref gidS);//获取所有的组别和gid ALLdeptIDS.AddRange(deptIDS); ALLgidS.AddRange(gidS); } queryData = (from a in queryData join b in db.BAS_INNERUSERGROUP on a.WxAftersales.INNERUSERID equals b.INNERUSERID //join g in db.BAS_INNERGROUP on b.GID equals g.GID where ALLdeptIDS.Contains(b.DEPTID.Value) || ALLgidS.Contains(b.GID.Value) select a); } //if (innerUserId > 0) //{ // queryData = queryData.Where(m => m.WxAftersales.INNERUSERID == innerUserId); //} //else if (groupId.HasValue && groupId.Value > -1) //{ // decimal g = groupId.Value; // var returnData = (from a in queryData // join b in db.BAS_INNERUSERGROUP on a.WxAftersales.INNERUSERID equals b.INNERUSERID // where b.GID == g // select a); // queryData = returnData; //} if (!string.IsNullOrWhiteSpace(resId)) { resId = resId.Trim(); queryData = queryData.Where(m => m.WxSzzyorder.RESID == resId); } if (!string.IsNullOrWhiteSpace(szzyOrderId)) { szzyOrderId = szzyOrderId.Trim(); var id = Convert.ToDecimal(szzyOrderId); queryData = queryData.Where(m => m.WxSzzyorder.SZZYORDERID == id); } if (!string.IsNullOrWhiteSpace(contractCode)) { contractCode = contractCode.Trim(); queryData = queryData.Where(m => m.WxSzzyorder.CONTRACTCODE == contractCode); } if (subProductId > 0) { queryData = queryData.Where(m => m.WxSzzyorder.SUBPRODUCTID == subProductId); } else { if (productId > 0) { queryData = queryData.Where(m => m.WxSzzyorder.PRODUCTID == productId); } } if (orderType > 0) { queryData = queryData.Where(m => m.WxSzzyorder.ORDERTYPE == orderType); } if (!string.IsNullOrWhiteSpace(stime)) { DateTime time1 = Convert.ToDateTime(stime); queryData = queryData.Where(m => m.WxSzzyorder.ARRIVALTIME >= time1); } if (!string.IsNullOrWhiteSpace(etime)) { DateTime time2 = Convert.ToDateTime(etime).AddDays(1); queryData = queryData.Where(m => m.WxSzzyorder.ARRIVALTIME < time2); } if (!string.IsNullOrWhiteSpace(orderStatus)) { orderStatus = orderStatus.Trim(); queryData = queryData.Where(m => m.WxSzzyorder.ORDERSTATUS == orderStatus); } if (!string.IsNullOrWhiteSpace(ostime)) { DateTime time1 = Convert.ToDateTime(ostime); queryData = queryData.Where(m => m.WxSzzyorder.OTIME >= time1); } if (!string.IsNullOrWhiteSpace(oetime)) { DateTime time2 = Convert.ToDateTime(oetime).AddDays(1); queryData = queryData.Where(m => m.WxSzzyorder.OTIME < time2); } if (!string.IsNullOrWhiteSpace(fcText)) { fcText = fcText.Trim(); queryData = queryData.Where(m => m.WxSzzyorder.FCTEXT.Contains(fcText)); } queryData = queryData.OrderByDescending(m => m.WxSzzyorder.CTIME).OrderByDescending(m => m.WxSzzyorder.OPERATETIME); PagerUtil.SetPager(ref queryData, ref pager); return queryData.ToList(); } } public List GetAfterSaleAssignViews(ref Pager pager, string resId, decimal? inneruserId, decimal? bindType, bool? samllorder = null) { using (var db = new crmContext()) { var where = PredicateExtensionses.True(); if (!string.IsNullOrWhiteSpace(resId)) { where = where.And(p => p.RESID == resId); } if (inneruserId.HasValue) { where = where.And(p => p.INNERUSERID == inneruserId.Value); } if (bindType.HasValue) { if (bindType == 1) { where = where.And(p => p.INNERUSERID > 0); } else { where = where.And(p => p.INNERUSERID == null); } } if (samllorder.HasValue) if (!samllorder.Value) where = where.And(p => p.FINALPAY > 100); var query = from p in db.WX_SZZYORDER.Where(p => p.ISOPEN == 1) join b in (db.WX_SZZYORDER.Where(p => p.ISOPEN == 1).GroupBy(p => p.RESID).Select(g => new { g.Key, finalPay = g.Max(gg => gg.FINALPAY) })) on p.RESID equals b.Key join a in db.WX_AFTERSALES on p.RESID equals a.RESID into t0 from pa in t0.DefaultIfEmpty() join r in db.WX_COMMISSIONRULE.Where(p => p.ISMAIN == 1) on p.ORDERID equals r.ORDERID into t1 from pr in t1.DefaultIfEmpty() where p.FINALPAY == b.finalPay select new AfterSaleAssignView() { RESID = p.RESID, INNERUSERID = pa.INNERUSERID, ORDERID = p.ORDERID, SUBPRODUCTNAME = p.SUBPRODUCTNAME, FINALPAY = p.FINALPAY, OTIME = p.OTIME, SALEUSERID = pr.SALEUSERID }; query = query.Where(where); if (bindType == 0) { query = query.OrderBy(p => p.OTIME); } else { query = query.OrderByDescending(p => p.ORDERID); } PagerUtil.SetPager(ref query, ref pager); return query.ToList(); } } public void SaveAfterSale(List list) { foreach (var wxAftersales in list) { var model = Get(p => p.RESID == wxAftersales.RESID); if (model != null) { if (wxAftersales.INNERUSERID == 0) { Delete(model); } else { model.INNERUSERID = wxAftersales.INNERUSERID; model.CTIME = DateTime.Now; Update(model); } } else { var info = new WX_AFTERSALES() { PKID = new SEQUENCES_BL().Seq_base_get(), RESID = wxAftersales.RESID, INNERUSERID = wxAftersales.INNERUSERID, CTIME = DateTime.Now }; Add(info); } } } public List GetList(ref Pager pager, string resId, string szzyOrderId, decimal productId, decimal subProductId, decimal orderType, string stime, string etime, QueryUserComboDto usercomboDto, string orderStatus, string ostime, string oetime, string cname, string customerType, DateTime? overstarttime, DateTime? overendtime, string amounttypeid) { decimal id = 0; if (!string.IsNullOrWhiteSpace(szzyOrderId)) { szzyOrderId = szzyOrderId.Trim(); id = Convert.ToDecimal(szzyOrderId); } //LogHelper.Info("gid:" + gid.ToString()); //LogHelper.Info("userId:" + userId.ToString()); DateTime? ostime1 = null, oetime1 = null, stime1 = null, etime1 = null; if (!string.IsNullOrWhiteSpace(ostime)) { ostime1 = Convert.ToDateTime(ostime); } if (!string.IsNullOrWhiteSpace(oetime)) { oetime1 = Convert.ToDateTime(oetime).AddDays(1); } if (!string.IsNullOrWhiteSpace(stime)) { stime1 = Convert.ToDateTime(stime); } if (!string.IsNullOrWhiteSpace(etime)) { etime1 = Convert.ToDateTime(etime).AddDays(1); } if (overendtime.HasValue) overendtime = overendtime.Value.AddDays(1); List ALLdeptIDS = new List(); List ALLgidS = new List(); if (string.IsNullOrEmpty(usercomboDto.groupIds) && !string.IsNullOrEmpty(usercomboDto.deptId)) { var depts = OperationUtil.ConvertToDecimal(usercomboDto.deptId.Split(',')); UserServices userservices = new UserServices(); foreach (var item in depts) { List deptIDS = new List(); List gidS = new List(); userservices.GetAllDeptIDOrGidByDeptId(item, ref deptIDS, ref gidS);//获取所有的组别和gid ALLdeptIDS.AddRange(deptIDS); ALLgidS.AddRange(gidS); } ALLdeptIDS.AddRange(ALLgidS); usercomboDto.groupIds = string.Join(",", ALLdeptIDS);//所有的部门ID和销售组ID } DataSet ds = dal.GetMyServiceRes(ref pager, resId, id, productId, subProductId, orderType, stime1, etime1, usercomboDto.groupIds, usercomboDto.userId ?? 0, orderStatus, ostime1, oetime1, cname, customerType, overstarttime, overendtime, amounttypeid); List list = ds.Tables[0].ToList(); AfterSaleServiceView model = list.FirstOrDefault(p => p.PKID == 0); pager.totalRows = Convert.ToInt32(model.rn); list.Remove(model); return list; } public List GetList_Nanjing(ref Pager pager, string resId, string szzyOrderId, decimal productId, decimal subProductId, decimal orderType, string stime, string etime, decimal? groupId, decimal? innerUserId, string orderStatus, string ostime, string oetime, string cname) { var gid = groupId ?? 0; var userId = innerUserId ?? 0; decimal id = 0; if (!string.IsNullOrWhiteSpace(szzyOrderId)) { szzyOrderId = szzyOrderId.Trim(); id = Convert.ToDecimal(szzyOrderId); } DateTime? ostime1 = null, oetime1 = null, stime1 = null, etime1 = null; if (!string.IsNullOrWhiteSpace(ostime)) { ostime1 = Convert.ToDateTime(ostime); } if (!string.IsNullOrWhiteSpace(oetime)) { oetime1 = Convert.ToDateTime(oetime).AddDays(1); } if (!string.IsNullOrWhiteSpace(stime)) { stime1 = Convert.ToDateTime(stime); } if (!string.IsNullOrWhiteSpace(etime)) { etime1 = Convert.ToDateTime(etime).AddDays(1); } DataSet ds = dal.GetMyServiceRes_Nanjing(ref pager, resId, id, productId, subProductId, orderType, stime1, etime1, gid, userId, orderStatus, ostime1, oetime1, cname); List list = ds.Tables[0].ToList(); AfterSaleServiceView model = list.FirstOrDefault(p => p.PKID == 0); pager.totalRows = Convert.ToInt32(model.rn); list.Remove(model); return list; } public List GetAfterSaleResReports(DateTime sTime, DateTime eTime) { var ds = dal.GetMyServiceResPort(sTime, eTime); var list = ds.Tables[0].ToList(); return list; } public List GetAfterSaleResReports2(DateTime sTime, DateTime eTime) { var ds = dal.GetMyServiceResPort2(sTime, eTime); var list = ds.Tables[0].ToList(); return list; } public List GetAfterSaleAssignViewList(ref Pager pager, string resId, decimal? inneruserId, decimal? bindType, string amounttypeid = null, bool? samllorder = null, DateTime? overstarttime = null, DateTime? overendtime = null) { decimal p_innerUserId = -1; decimal p_bindType = -1; decimal p_smallOrder = 0; if (inneruserId.HasValue) { p_innerUserId = inneruserId.Value; } if (bindType.HasValue) { p_bindType = bindType.Value; } if (samllorder.HasValue && samllorder.Value) { p_smallOrder = 1; } var ds = dal.GetAfterSalesList(ref pager, resId, p_innerUserId, p_bindType, p_smallOrder, overstarttime, overendtime, amounttypeid); var list = ds.Tables[0].ToList(); var model = list.FirstOrDefault(p => p.ORDERID == 0); pager.totalRows = Convert.ToInt32(model.rn); list.Remove(model); return list; } public List GetAfterSaleAssignViewList_Nanjing(ref Pager pager, string resId, decimal? inneruserId, decimal? bindType, decimal memoType, bool? samllorder = null) { decimal p_innerUserId = -1; decimal p_bindType = -1; decimal p_smallOrder = 0; if (inneruserId.HasValue) { p_innerUserId = inneruserId.Value; } if (bindType.HasValue) { p_bindType = bindType.Value; } if (samllorder.HasValue && samllorder.Value) { p_smallOrder = 1; } DataSet ds = dal.GetAfterSalesList_Nanjing(ref pager, resId, p_innerUserId, p_bindType, p_smallOrder, memoType); List list = ds.Tables[0].ToList(); AfterSaleAssignView_Nanjing model = list.FirstOrDefault(p => p.ORDERID == 0); pager.totalRows = Convert.ToInt32(model.rn); list.Remove(model); return list; } public List GetServiceResList() { using (var db = new crmContext()) { var query = from p in db.ORD_SERVICEMEMO.Where(m => m.MEMOSUBTYPEID == 1034).GroupBy(p => p.RESID).Select(g => new { g.Key }) select new AfterSaleServiceRes { ResId = p.Key }; if (query != null) { return query.ToList(); } else { return new List(); } } } } }