TG.WXCRM.V4/BLL/Csvr/CSVR_CALLRECORD_BL.cs

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();
}
}
}
}