425 lines
17 KiB
C#
425 lines
17 KiB
C#
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<CSVR_CALLRECORD>, 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<decimal> ALLdeptIDS = new List<decimal>();
|
|
List<decimal> ALLgidS = new List<decimal>();
|
|
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<decimal> deptIDS = new List<decimal>();
|
|
List<decimal> gidS = new List<decimal>();
|
|
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<decimal> ALLdeptIDS = new List<decimal>();
|
|
List<decimal> ALLgidS = new List<decimal>();
|
|
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<decimal> deptIDS = new List<decimal>();
|
|
List<decimal> gidS = new List<decimal>();
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取没有通话时间的工单
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public IEnumerable<MemoDto> 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<CSVR_CALLRECORD> getCallRecordByTimestart(DateTime timestart)
|
|
{
|
|
using (var db = new WX.CRM.Model.Entity.crmContext())
|
|
{
|
|
return db.CSVR_CALLRECORD.Where(p => p.TIMESTART > timestart).ToList();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 更新工单通话时间
|
|
/// </summary>
|
|
/// <param name="list"></param>
|
|
public void UpdateEndTime(IEnumerable<MemoDto> 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<CSVR_CALLRECORD> 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<CSVR_CALLRECORDUN> 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<CSVR_CALLRECORD> 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);
|
|
}
|
|
/// <summary>
|
|
/// 质检录音查询
|
|
/// </summary>
|
|
/// <param name="pager"></param>
|
|
/// <param name="V_GROUPNAME"></param>
|
|
/// <param name="V_USEREID"></param>
|
|
/// <param name="V_STIME"></param>
|
|
/// <param name="V_ETIME"></param>
|
|
/// <param name="V_MAXLENGTH"></param>
|
|
/// <param name="V_MINLENGHT"></param>
|
|
/// <param name="V_RESID"></param>
|
|
/// <param name="V_RECORDID"></param>
|
|
/// <returns></returns>
|
|
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<CSVR_CALLRECORD> GetListByResIds(List<string> 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();
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|