using System; using System.Collections.Generic; using System.Data; using System.Linq; using WX.CRM.BLL.Base; using WX.CRM.BLL.RedisBL; using WX.CRM.Common; using WX.CRM.DAL.Csvr; using WX.CRM.DAL.QH; using WX.CRM.IBLL.Csvr; using WX.CRM.Model.Entity; using WX.CRM.Model.EntitySync; using WX.CRM.Model.MAP; using WX.CRM.BLL.Application.UserComBox; namespace WX.CRM.BLL.Csvr { public class CSVR_CALLRECORD_BL : DbContextRepository, ICSVR_CALLRECORD, ICSVR_CALLRECORD_Q { private readonly RedisBL.ReadOrWriteFromRedis_BL redisBl = new RedisBL.ReadOrWriteFromRedis_BL(); public DataSet GetCallRecord(ref Pager pager, QueryUserComboDto usercomboDto, DateTime? V_STIME, DateTime? V_ETIME, int? V_MAXLENGTH, int? V_MINLENGHT, string V_RESID, string V_RECORDID, string V_CNAME, decimal V_CALLTYPE, decimal V_ISCHECKED) { 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 } return new CALLRECORD_DAL().GetCallRecord(ref pager, usercomboDto, V_STIME, V_ETIME, V_MAXLENGTH, V_MINLENGHT, V_RESID, V_RECORDID, V_CNAME, V_CALLTYPE, V_ISCHECKED); } public DataSet GetUnCallRecord(ref Pager pager, QueryUserComboDto usercomboDto, DateTime? V_STIME, DateTime? V_ETIME, int? V_MAXLENGTH, int? V_MINLENGHT, string V_RESID, string V_RECORDID, decimal V_CALLTYPE, decimal V_ISCHECKED) { 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 } return new CALLRECORD_DAL().GetUnCallRecord(ref pager, usercomboDto, V_STIME, V_ETIME, V_MAXLENGTH, V_MINLENGHT, V_RESID, V_RECORDID, V_CALLTYPE, V_ISCHECKED); } public DataSet GetOrderCallRecord(ref Pager pager, string V_DEPTID, string V_GROUPID, string V_USERID, DateTime? V_STIME, DateTime? V_ETIME, int? V_MAXLENGTH, int? V_MINLENGHT, string V_RESID, string V_RECORDID, decimal V_CALLTYPE) { return new CALLRECORD_DAL().GetOrderCallRecord(ref pager, V_DEPTID, V_GROUPID, V_USERID, V_STIME, V_ETIME, V_MAXLENGTH, V_MINLENGHT, V_RESID, V_RECORDID, V_CALLTYPE); } /// /// 获取没有通话时间的工单 /// /// public IEnumerable GetNoEndTime() { return new CALLRECORD_DAL().GetNoEndTime(); } public CSVR_TODAYRECORD GetNewestCallRecord(string resid, decimal salerid, DateTime ctime) { return new CALLRECORD_DAL().GetNewestCallRecord(resid, salerid, ctime); } public void InitOrderCallTime() { new CALLRECORD_DAL().InitOrderCallTime(); } public List getCallRecordByTimestart(DateTime timestart) { using (var db = new WX.CRM.Model.Entity.crmContext()) { return db.CSVR_CALLRECORD.Where(p => p.TIMESTART > timestart).ToList(); } } /// /// 更新工单通话时间 /// /// public void UpdateEndTime(IEnumerable list) { using (var db = new WX.CRM.Model.Entity.crmContext()) { foreach (var row in list) { if (row.CALLTIME == null || row.CALLTIMEEND == null) continue; decimal orderid = row.ORDERID; if (row.TYP == "ORD_SALEMEMO") { var memo = db.ORD_SALEMEMO.FirstOrDefault(o => o.MEMOID == orderid); if (null != memo) { memo.ISCHECKED = 1; memo.CALLTIME = row.CALLTIME; memo.CALLTIMEEND = row.CALLTIMEEND; } } if (row.TYP == "ORD_SERVICEMEMO") { var memo = db.ORD_SERVICEMEMO.FirstOrDefault(o => o.MEMOID == orderid); if (null != memo) { memo.ISCHECKED = 1; memo.CALLTIME = row.CALLTIME; memo.CALLTIMEEND = row.CALLTIMEEND; } } if (row.TYP == "ORD_PURPOSEMEMO") { var memo = db.ORD_PURPOSEMEMO.FirstOrDefault(o => o.MEMOID == orderid); if (null != memo) { memo.ISCHECKED = 1; memo.CALLTIME = row.CALLTIME; memo.CALLTIMEEND = row.CALLTIMEEND; } } if (row.TYP == "ORD_SPECIALMEMO") { var memo = db.ORD_SPECIALMEMO.FirstOrDefault(o => o.MEMOID == orderid); if (null != memo) { memo.ISCHECKED = 1; memo.CALLTIME = row.CALLTIME; memo.CALLTIMEEND = row.CALLTIMEEND; } } } try { db.Configuration.ValidateOnSaveEnabled = false; db.SaveChanges(); } catch (Exception ex) { foreach (var error in db.GetValidationErrors()) { LogHelper.Error(error.ToString()); } } } } public decimal? GetLastCallRecord() { using (var db = new WX.CRM.Model.Entity.crmContext()) { decimal? resid = db.CSVR_CALLRECORD.Max(m => m.RECORDID); return resid; } } public string GetLastCoid() { using (var db = new WX.CRM.Model.Entity.crmContext()) { string coid = db.CSVR_CALLRECORD.Max(p => p.COID); return coid; } } public DateTime GetLastStartTime() { using (var db = new WX.CRM.Model.Entity.crmContext()) { DateTime? timestart = db.CSVR_CALLRECORD.Max(p => p.TIMESTART); return timestart.Value; } } public void AddListRecord(List listModel) { using (var db = new WX.CRM.Model.Entity.crmContext()) { var pkid = new SEQUENCES_BL(); foreach (var model in listModel) { model.PKID = pkid.Seq_base_get(); if (model.RECORDID == 0) model.RECORDID = model.PKID; db.CSVR_CALLRECORD.Add(model); } db.SaveChanges(); } } public void AddListRecordUN(List listModel) { using (var db = new WX.CRM.Model.Entity.crmContext()) { var pkid = new SEQUENCES_BL(); foreach (var model in listModel) { model.PKID = pkid.Seq_base_get(); if (model.RECORDID == 0) model.RECORDID = model.PKID; db.CSVR_CALLRECORDUN.Add(model); } db.SaveChanges(); } } public void AddListRecord2(List listModel) { using (var db = new WX.CRM.Model.Entity.crmContext()) { var pkid = new SEQUENCES_BL(); foreach (var model in listModel) { var m = new CSVR_CALLRECORD2() { PKID = pkid.Seq_base_get(), RECORDID = model.RECORDID, SERVERID = model.SERVERID, FILENAME = model.FILENAME, RESID = model.RESID, SERVICENUMBER = model.SERVICENUMBER, TELNUMBERLAST4 = model.TELNUMBERLAST4, TIMELENGTH = model.TIMELENGTH, CALLTYPE = model.CALLTYPE, SALESEID = model.SALESEID, TIMESTART = model.TIMESTART, CTIME = model.CTIME, TIMEEND = model.TIMEEND, COID = model.COID }; if (m.RECORDID == 0) m.RECORDID = m.PKID; db.CSVR_CALLRECORD2.Add(m); } db.SaveChanges(); } } public void UpdateNoTimeBymemoids(string Memoids) { new CALLRECORD_DAL().UpdateNoTimeBymemoids(Memoids); } /// /// 质检录音查询 /// /// /// /// /// /// /// /// /// /// /// public DataSet GetOACallRecord(ref Pager pager, string V_GROUPNAME, decimal? V_USEREID, DateTime? V_STIME, DateTime? V_ETIME, int? V_MAXLENGTH, int? V_MINLENGHT, string V_RESID, decimal? V_RECORDID, decimal? V_TYPE) { return new CALLRECORD_DAL().GetOACallRecord(ref pager, V_GROUPNAME, V_USEREID, V_STIME, V_ETIME, V_MAXLENGTH, V_MINLENGHT, V_RESID, V_RECORDID, V_TYPE); } public CSVR_CALLRECORD GetModel_CallRecord(decimal pkid) { using (var db = new crmContext()) { return db.CSVR_CALLRECORD.Where(m => m.PKID == pkid).FirstOrDefault(); } } public void UpdateCallTime(decimal memoid) { using (var db = new crmContext()) { CACHE_ORD_MEMO cacheMemo = db.CACHE_ORD_MEMO.FirstOrDefault(m => m.MEMOID == memoid); if (null != cacheMemo) { CSVR_TODAYRECORD record = new CALLRECORD_DAL().GetNewestCallRecord(cacheMemo.RESID, cacheMemo.INNERUSERID.Value, cacheMemo.CTIME.Value); if (null != record) { cacheMemo.CALLTIME = record.TIMESTART; cacheMemo.CALLTIMEEND = record.TIMEEND; switch (Convert.ToInt32(cacheMemo.MTYPEID)) { case 0: ORD_SALEMEMO salememo = db.ORD_SALEMEMO.FirstOrDefault(p => p.MEMOID == cacheMemo.MEMOID); salememo.STRCONTENT = "-1"; salememo.CALLTIME = record.TIMESTART; salememo.CALLTIMEEND = record.TIMEEND; break; case 1: ORD_SERVICEMEMO servicememo = db.ORD_SERVICEMEMO.FirstOrDefault(p => p.MEMOID == cacheMemo.MEMOID); servicememo.STRCONTENT = "-1"; servicememo.CALLTIME = record.TIMESTART; servicememo.CALLTIMEEND = record.TIMEEND; break; case 2: ORD_PURPOSEMEMO purposememo = db.ORD_PURPOSEMEMO.FirstOrDefault(p => p.MEMOID == cacheMemo.MEMOID); purposememo.STRCONTENT = "-1"; purposememo.CALLTIME = record.TIMESTART; purposememo.CALLTIMEEND = record.TIMEEND; break; case 3: ORD_SPECIALMEMO specialmemo = db.ORD_SPECIALMEMO.FirstOrDefault(p => p.MEMOID == cacheMemo.MEMOID); specialmemo.STRCONTENT = "-1"; specialmemo.CALLTIME = record.TIMESTART; specialmemo.CALLTIMEEND = record.TIMEEND; break; } db.SaveChanges(); //UpdateToRedis(memoid, cacheMemo.CALLTIME, cacheMemo.CALLTIMEEND); } } else { throw new Exception("工单不存在"); } } } public void DeleteByCOID(string coid) { using (var db = new WX.CRM.Model.Entity.crmContext()) { var d = db.CSVR_CALLRECORD.FirstOrDefault(p => p.COID == coid); if (null != d) db.CSVR_CALLRECORD.Remove(d); var d2 = db.CSVR_TODAYRECORD.FirstOrDefault(p => p.COID == coid); if (null != d2) db.CSVR_TODAYRECORD.Remove(d2); db.SaveChanges(); } } public string Sys_Environment_CTI_VER() { var rst = Utility.GetSettingByKey("Sys_Environment_CTI_VER"); if (string.IsNullOrEmpty(rst)) { var rstmodel = new BAS_PARAMETER_BL().GetModel_Patameter("Sys_Environment_CTI_VER"); if (null != rstmodel) rst = rstmodel.PARAVALUE; } return rst; } public DataSet GetCallRecordHis(string V_RESID, decimal? V_RECORDID) { return new CALLRECORD_DAL().GetCallRecordHis(V_RESID, V_RECORDID); } public int RestoreCallRecord(string resid, DateTime? dtstart, DateTime? dtend) { if (dtstart != null && dtend != null) { return new CALLRECORD_DAL().RestoreCallRecord(resid, dtstart.Value, dtend.Value); } return 0; } public DataTable GetRecordByEID(decimal? v_recordid, decimal v_eid, string v_resid, ref Pager pager) { return new AccountApply_DAL().GetRecordByEID(v_recordid, v_eid, v_resid, ref pager); } #region UpdateRedis private void UpdateToRedis(decimal memoid, DateTime? calltime, DateTime? calltimeend, bool result = true) { redisBl.UpdateCallTime(memoid, calltime, calltimeend, out result); if (!result) { REDIS_CACHE_SSODATASYNC_BL cacheBL = new REDIS_CACHE_SSODATASYNC_BL(); #region redis 添加到待打包表 REDIS_CACHE_SSODATASYNC redisMoel1 = new REDIS_CACHE_SSODATASYNC(); redisMoel1.TABLETYPE = "cache_ord_memo"; redisMoel1.KEYS = memoid.ToString(); redisMoel1.OPTYPE = "U"; redisMoel1.TIME = DateTime.Now; redisMoel1.LASTSYNCTIME = DateTime.Now; redisMoel1.ERRNUM = 0; redisMoel1.ERRMSG = ""; cacheBL.Create_RedisCacheSSODataSYNC(redisMoel1); #endregion } } #endregion public List GetListByResIds(List resids) { using (var db = new WX.CRM.Model.Entity.crmContext()) { var query = db.CSVR_CALLRECORD.AsQueryable(); query = query.Where(m => resids.Contains(m.RESID)); query = query.OrderByDescending(m => m.CTIME); return query.ToList(); } } } }