//using CRM.Core.DTO; using System; using System.Collections.Generic; using System.Linq; using WX.CRM.BLL.Base; using WX.CRM.BLL.Res; 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.QueryMap; namespace WX.CRM.BLL.Wx { public class WX_AFTERSALES2_BL : DbContextRepository, IWX_AFTERSALES2 { WX_SZZYORDER_DAL dal = new WX_SZZYORDER_DAL(); RES_CUSTOMER_BL _customer = new RES_CUSTOMER_BL(); WX_SZZYORDER_BL _order = new WX_SZZYORDER_BL(); WX_AFTERSALES2_LOG_BL _log = new WX_AFTERSALES2_LOG_BL(); public List GetList(ref Pager pager, AfterSales2QueryDto dto) { var gid = dto.groupId ?? 0; var userId = dto.userId ?? 0; decimal id = 0; if (!string.IsNullOrWhiteSpace(dto.szzyOrderId)) { id = Convert.ToDecimal(dto.szzyOrderId.Trim()); } //LogHelper.Info("gid:" + gid.ToString()); //LogHelper.Info("userId:" + userId.ToString()); DateTime? ostime1 = null, oetime1 = null, stime1 = null, etime1 = null; if (!string.IsNullOrWhiteSpace(dto.ostime)) { ostime1 = Convert.ToDateTime(dto.ostime); } if (!string.IsNullOrWhiteSpace(dto.oetime)) { oetime1 = Convert.ToDateTime(dto.oetime).AddDays(1); } if (!string.IsNullOrWhiteSpace(dto.stime)) { stime1 = Convert.ToDateTime(dto.stime); } if (!string.IsNullOrWhiteSpace(dto.etime)) { etime1 = Convert.ToDateTime(dto.etime).AddDays(1); } if (dto.overendtime.HasValue) dto.overendtime = dto.overendtime.Value.AddDays(1); var ds = dal.GetMyServiceRes2(ref pager, dto.resId, id, dto.productId, dto.midProductId, dto.subProductId, dto.orderType, stime1, etime1, gid, userId, dto.orderStatus, ostime1, oetime1, dto.cname, dto.overstarttime, dto.overendtime, dto.remark); var list = ds.Tables[0].ToList(); var model = list.FirstOrDefault(p => string.IsNullOrEmpty(p.ID)); pager.totalRows = Convert.ToInt32(model.rn); list.Remove(model); return list; } public retMsg Save(WX_AFTERSALES2 dto) { var customer = _customer.getResCustomerByResId(dto.RESID); if (customer == null) { return new retMsg() { result = false, retcode = 400, retmsg = "notexists" }; } var isExists = Exists(p => p.RESID == dto.RESID); if (isExists) { return new retMsg() { result = false, retcode = 100, retmsg = "exists" }; } //var order = _order.Get(p => p.RESID == dto.RESID && p.ISFINANCEPAY == 1); //if (order == null) //{ // return new retMsg() { result = false, retcode = 400, retmsg = "notorder" }; //} var ret = Add(dto); _log.Add(new WX_AFTERSALES2_LOG(dto.RESID, dto.INNERUSERID, dto.EID, dto.UNAME, "add")); return new retMsg() { result = (ret > 0), retcode = 200, retmsg = "success" }; } public retMsg Batch(string resids, decimal UserId, decimal Eid, string UserName) { resids = resids.Replace("\r\n", "&"); resids = resids.Replace("\r", "&"); resids = resids.Replace("\n", "&"); var list = resids.Trim().Split('&'); var existsList = GetList(p => list.Contains(p.RESID)); if (existsList.Any()) { return new retMsg() { result = false, retcode = 100, retmsg = string.Join(",", existsList) }; } var data = new List(); var log = new List(); foreach (var item in list) { if (!string.IsNullOrEmpty(item)) { var model = new WX_AFTERSALES2(item, UserId, Eid, UserName, string.Empty); data.Add(model); var logmodel = new WX_AFTERSALES2_LOG(item, UserId, Eid, UserName, "add"); log.Add(logmodel); } } AddList(data); _log.AddList(log); return new retMsg() { result = true, retcode = 200, retmsg = "success" }; } public retMsg Change(string resids, decimal userId, decimal eid, string userName) { var arr = resids.Split(','); foreach (var item in arr) { var model = Get(p => p.ID == item); if (model != null) { Delete(model); Add(new WX_AFTERSALES2(model.RESID, userId, eid, userName, string.Empty)); _log.Add(new WX_AFTERSALES2_LOG(model.RESID, userId, eid, userName, model.INNERUSERID, model.EID, model.UNAME, "update")); } } return new retMsg() { result = true, retcode = 200, retmsg = "success" }; } public retMsg Edit(string resid, string remark) { var model = Get(p => p.RESID == resid); if (model != null) { model.REMARK = remark; Update(model); } return new retMsg() { result = true, retcode = 200, retmsg = "success" }; } public bool Delete(string id) { var model = Get(p => p.ID == id); if (model != null) { Delete(model); _log.Add(new WX_AFTERSALES2_LOG(model.RESID, model.INNERUSERID, model.EID, model.UNAME, "delete")); } return true; } 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_AFTERSALES2 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;//CTIME会随着更改 Update(model); } } else { var info = new WX_AFTERSALES2() { PKID = new SEQUENCES_BL().Seq_base_get(), RESID = wxAftersales.RESID, INNERUSERID = wxAftersales.INNERUSERID, CTIME = DateTime.Now }; Add(info); } } } } }