679 lines
32 KiB
C#
679 lines
32 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.Data.Entity;
|
||
using System.Linq;
|
||
using WX.CRM.BLL.Base;
|
||
using WX.CRM.BLL.RedisBL;
|
||
using WX.CRM.BLL.Util;
|
||
using WX.CRM.Common;
|
||
using WX.CRM.IBLL.Ord;
|
||
using WX.CRM.Model.Entity;
|
||
using WX.CRM.Model.EntitySync;
|
||
using WX.CRM.Model.Enum;
|
||
using WX.CRM.Model.MAP;
|
||
using WX.CRM.BLL.Application.UserComBox;
|
||
using WX.CRM.Model.QueryMap;
|
||
using System.Data.OracleClient;
|
||
using WX.CRM.DAL;
|
||
|
||
namespace WX.CRM.BLL.Ord
|
||
{
|
||
public class ORD_SERVICEMEMO_BL : IORD_SERVICEMEMO_Q, IORD_SERVICEMEMO
|
||
{
|
||
private readonly RedisBL.ReadOrWriteFromRedis_BL redisBl = new RedisBL.ReadOrWriteFromRedis_BL();
|
||
#region 服务工单
|
||
/// <summary>
|
||
/// 新增销售单
|
||
/// </summary>
|
||
/// <param name="errors">错误信息</param>
|
||
/// <param name="model">销售工单信息</param>
|
||
/// <param name="strContent">工单内容</param>
|
||
/// <returns></returns>
|
||
public bool Create(ref ValidationErrors errors, ORD_SERVICEMEMO model, ORD_SERVICEMEMO_EXT ext)
|
||
{
|
||
try
|
||
{
|
||
using (crmContext db = new crmContext())
|
||
{
|
||
SEQUENCES_BL pkidBll = new SEQUENCES_BL();
|
||
ORD_MEMOCONTENT entry = new ORD_MEMOCONTENT();
|
||
entry.CONTENTID = pkidBll.Seq_base_get(PKIDType.LargeTable);
|
||
entry.STRCONTENT = model.STRCONTENT;
|
||
entry.CTIME = DateTime.Now;
|
||
db.ORD_MEMOCONTENT.Add(entry);//--新增工单内容
|
||
model.MEMOCONTENTID = entry.CONTENTID;
|
||
model.MEMOID = pkidBll.Seq_base_get(PKIDType.LargeTable);
|
||
db.ORD_SERVICEMEMO.Add(model);//--新增工单
|
||
|
||
if (!string.IsNullOrEmpty(ext.QW) || !string.IsNullOrEmpty(ext.CP) || !string.IsNullOrEmpty(ext.ZHIBO) || !string.IsNullOrEmpty(ext.ZHIBOTXT) || !string.IsNullOrEmpty(ext.MYD) || !string.IsNullOrEmpty(ext.MYDTXT))
|
||
{
|
||
ext.MEMOID = model.MEMOID;
|
||
ext.CTIME = DateTime.Now;
|
||
db.ORD_SERVICEMEMO_EXT.Add(ext);
|
||
}
|
||
|
||
CACHE_ORD_MEMO cacheOrd = new CACHE_ORD_MEMO();
|
||
cacheOrd.MTYPEID = (decimal)EnumMemoType.服务工单;
|
||
cacheOrd.MEMOID = model.MEMOID;
|
||
cacheOrd.MEMOCONTENTID = model.MEMOCONTENTID;
|
||
cacheOrd.MEMOSTYLEID = model.MEMOSTYLEID;
|
||
cacheOrd.MEMOTYPEID = model.MEMOTYPEID;
|
||
cacheOrd.MEMOSUBTYPEID = model.MEMOSUBTYPEID;
|
||
cacheOrd.ISCHECKED = model.ISCHECKED;
|
||
cacheOrd.INNERUSERID = model.INNERUSERID;
|
||
cacheOrd.CALLTIME = model.CALLTIME;
|
||
cacheOrd.CALLTIMEEND = model.CALLTIMEEND;
|
||
cacheOrd.CTIME = model.CTIME;
|
||
cacheOrd.BUSINESSID = model.BUSINESSID;
|
||
cacheOrd.RESID = model.RESID;
|
||
cacheOrd.COID = model.COID;
|
||
db.CACHE_ORD_MEMO.Add(cacheOrd);
|
||
|
||
bool result2 = db.SaveChanges().GetResult();
|
||
//if (result2)
|
||
// AddToRedis(entry, cacheOrd);
|
||
return result2;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error("ORD_SERVICEMEMO_BL ---> public bool Create(ref ValidationErrors errors, ORD_SERVICEMEMO model) 错误信息:" + ex.ToString());
|
||
errors.Add(ex.Message);
|
||
return false;
|
||
}
|
||
}
|
||
#endregion
|
||
#region 获取条件后的queryData
|
||
/// <summary>
|
||
/// 获取条件后的queryData
|
||
/// </summary>
|
||
/// <param name="queryData"></param>
|
||
/// <param name="db"></param>
|
||
/// <param name="memoId"></param>
|
||
/// <param name="stime"></param>
|
||
/// <param name="etime"></param>
|
||
/// <param name="MemoType"></param>
|
||
/// <param name="MemoSubtype"></param>
|
||
/// <param name="content"></param>
|
||
/// <param name="userComboDto"></param>
|
||
/// <returns></returns>
|
||
private IQueryable<ORD_SERVICEMEMO> GetQuery(IQueryable<ORD_SERVICEMEMO> queryData, WX.CRM.Model.Entity.crmContext db,
|
||
string memoId, string stime, string etime, string resid, decimal MemoType, decimal MemoSubtype, string content, QueryUserComboDto userComboDto)
|
||
{
|
||
if (!string.IsNullOrEmpty(memoId))
|
||
{
|
||
//decimal _memoId = Convert.ToDecimal(memoId);
|
||
//queryData = queryData.Where(m => m.MEMOID == _memoId);
|
||
var arr = memoId.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(decimal.Parse).ToList();
|
||
queryData = queryData.Where(m => arr.Contains(m.MEMOID));
|
||
}
|
||
DateTime dt;
|
||
if (!string.IsNullOrEmpty(content))
|
||
{
|
||
var contentids = db.ORD_MEMOCONTENT.Where(x => x.STRCONTENT.Contains(content)).Select(x => x.CONTENTID).ToList();
|
||
queryData = queryData.Where(x => contentids.Contains(x.MEMOCONTENTID.Value));
|
||
}
|
||
if (!string.IsNullOrWhiteSpace(stime) && DateTime.TryParse(stime, out dt))
|
||
queryData = queryData.Where(a => a.CTIME >= dt);
|
||
DateTime dt2;
|
||
if (!string.IsNullOrWhiteSpace(etime) && DateTime.TryParse(etime, out dt2))
|
||
{
|
||
queryData = queryData.Where(a => a.CTIME <= dt2);
|
||
}
|
||
|
||
if (!string.IsNullOrWhiteSpace(resid))
|
||
queryData = queryData.Where(a => a.RESID == resid);
|
||
|
||
if (MemoType != 0)
|
||
queryData = queryData.Where(a => a.MEMOTYPEID == MemoType);
|
||
|
||
if (MemoSubtype != 0)
|
||
queryData = queryData.Where(a => a.MEMOSUBTYPEID == MemoSubtype);
|
||
if (userComboDto.userId.HasValue)
|
||
{
|
||
queryData = queryData.Where(m => m.INNERUSERID == userComboDto.userId.Value);
|
||
}
|
||
else if (!string.IsNullOrEmpty(userComboDto.groupIds))
|
||
{
|
||
decimal[] _groupids = OperationUtil.ConvertToDecimal(userComboDto.groupIds.Split(','));
|
||
var userIds = db.BAS_INNERUSERGROUP.Where(m => _groupids.Contains(m.GID.Value)).Select(m => m.INNERUSERID);
|
||
queryData = queryData.Where(m => userIds.Contains(m.INNERUSERID.Value));
|
||
}
|
||
else if (!string.IsNullOrEmpty(userComboDto.deptId))
|
||
{
|
||
//decimal[] _saleDeptId = OperationUtil.ConvertToDecimal(userComboDto.deptId.Split(','));
|
||
//var groupIds = db.BAS_INNERGROUP.Where(m => _saleDeptId.Contains(m.SALEDEPTID.Value)).Select(p => p.GID).ToList();
|
||
//var userIds = (from a in db.BAS_INNERUSERGROUP where groupIds.Contains(a.GID.Value) select a.INNERUSERID);
|
||
//queryData = queryData.Where(a => userIds.Contains(a.INNERUSERID.Value));
|
||
var depts = OperationUtil.ConvertToDecimal(userComboDto.deptId.Split(','));
|
||
List<decimal> ALLdeptIDS = new List<decimal>();
|
||
List<decimal> ALLgidS = new List<decimal>();
|
||
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);
|
||
}
|
||
queryData = (from a in queryData
|
||
join b in db.BAS_INNERUSERGROUP on a.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);
|
||
}
|
||
else if (userComboDto.companyId.HasValue)
|
||
{
|
||
queryData = from a in queryData
|
||
join u in db.BAS_INNERUSER on a.INNERUSERID equals u.PKID
|
||
join ug in db.BAS_INNERUSERGROUP on u.PKID equals ug.INNERUSERID
|
||
join g in db.BAS_INNERGROUP on ug.GID equals g.GID
|
||
join d in db.BAS_SALESDEPARTMENT on g.SALEDEPTID equals d.SALEDEPTID
|
||
where d.COMPANYID == userComboDto.companyId.Value
|
||
select a;
|
||
}
|
||
return queryData;
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 获取客户ID
|
||
public List<ord_memoExport> GetMemoResId(string memoId, string stime, string etime, string resid, decimal MemoType, decimal MemoSubtype, QueryUserComboDto userComboDto)
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
var queryData = db.ORD_SERVICEMEMO.AsQueryable();
|
||
queryData = GetQuery(queryData, db, memoId, stime, etime, resid, MemoType, MemoSubtype, null, userComboDto);
|
||
//return queryData.Select(m => m.RESID).Distinct().ToList();
|
||
//var q =
|
||
//from p in queryData
|
||
//group p by p.RESID into g
|
||
//select new
|
||
//{
|
||
// g.Key,
|
||
// ncount = g.Count()
|
||
//};
|
||
//var nlist = q.ToList();
|
||
//return nlist.Select(m => m.Key).ToList();
|
||
|
||
var q = from a in queryData
|
||
join b in db.RES_CUSTOMER on a.RESID equals b.RESID
|
||
join c in db.RES_CUSTOMER on b.CUSTOMERID equals c.CUSTOMERID
|
||
join d in db.RES_ACTIVITY on c.CUSTOMERFROM equals d.RESOURCETAG into tempD
|
||
from d in tempD.DefaultIfEmpty()
|
||
join e in db.RES_CUSTOMERDETAIL on a.RESID equals e.RESID
|
||
select new ord_memoExport()
|
||
{
|
||
resid = a.RESID,
|
||
otherResid = c.RESID,
|
||
resAscription = d.ACTIVITYCODE.Substring(0, 1),
|
||
innerUserId = a.INNERUSERID,
|
||
name = e.CNAME,
|
||
ctime = a.CTIME,
|
||
callTime = a.CALLTIME
|
||
};
|
||
return q.OrderBy(m => m.resid).ToList();
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 获取分页数据列表
|
||
public List<WX.CRM.Model.QueryMap.ORD_MemoQuery> GetList(ref Pager pager,
|
||
string memoId,
|
||
string stime,
|
||
string etime,
|
||
string resid,
|
||
decimal MemoType,
|
||
decimal MemoSubtype,
|
||
string content,
|
||
QueryUserComboDto userComboDto)
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
var queryData = db.ORD_SERVICEMEMO.AsQueryable();
|
||
queryData = GetQuery(queryData, db, memoId, stime, etime, resid, MemoType, MemoSubtype, content, userComboDto);
|
||
queryData = queryData.OrderByDescending(m => m.MEMOID);
|
||
PagerUtil.SetPager<WX.CRM.Model.Entity.ORD_SERVICEMEMO>(ref queryData, ref pager);
|
||
var data = new List<ORD_MemoQuery>();
|
||
data = (from a in queryData
|
||
join b in db.ORD_MEMOCONTENT on a.MEMOCONTENTID equals b.CONTENTID
|
||
join c in db.RES_CUSTOMERDETAIL on a.RESID equals c.RESID
|
||
join e in db.ORD_SERVICEMEMO_EXT on a.MEMOID equals e.MEMOID into aeTmp
|
||
from ae in aeTmp.DefaultIfEmpty()
|
||
select new ORD_MemoQuery()
|
||
{
|
||
BUSINESSID = a.BUSINESSID,
|
||
CALLTIME = a.CALLTIME,
|
||
CALLTIMEEND = a.CALLTIMEEND,
|
||
CNAME = c.CNAME,
|
||
CTIME = a.CTIME,
|
||
INNERUSERID = a.INNERUSERID,
|
||
MEMOCONTENTID = a.MEMOCONTENTID,
|
||
MEMOID = a.MEMOID,
|
||
MEMOSTYLEID = a.MEMOSTYLEID,
|
||
MEMOSUBTYPEID = a.MEMOSUBTYPEID,
|
||
MEMOTYPEID = a.MEMOTYPEID,
|
||
RESID = a.RESID,
|
||
STRCONTENT = b.STRCONTENT,
|
||
ExtMemoId = ae.MEMOID,
|
||
QW = ae.QW,
|
||
CP = ae.CP,
|
||
ZHIBO = ae.ZHIBO,
|
||
ZHIBOTXT = ae.ZHIBOTXT,
|
||
MYD = ae.MYD,
|
||
MYDTXT = ae.MYDTXT
|
||
}).ToList();
|
||
return data;
|
||
}
|
||
}
|
||
#endregion
|
||
#region 获取客户工单信息
|
||
public List<WX.CRM.Model.QueryMap.ORD_MemoQuery> GetListByResId(ref Pager pager, string ResId)
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
var queryData = db.ORD_SERVICEMEMO.AsQueryable();
|
||
//queryData = queryData.OrderByDescending(m => m.MEMOID);
|
||
queryData = queryData.Where(m => m.RESID == ResId);
|
||
PagerUtil.SetPager<WX.CRM.Model.Entity.ORD_SERVICEMEMO>(ref queryData, ref pager);
|
||
var obj = (from a in queryData
|
||
join b in db.ORD_MEMOCONTENT on a.MEMOCONTENTID equals b.CONTENTID
|
||
join c in db.RES_CUSTOMERDETAIL on a.RESID equals c.RESID
|
||
select new ORD_MemoQuery()
|
||
{
|
||
BUSINESSID = a.BUSINESSID,
|
||
CALLTIME = a.CALLTIME,
|
||
CALLTIMEEND = a.CALLTIMEEND,
|
||
CNAME = c.CNAME,
|
||
CTIME = a.CTIME,
|
||
INNERUSERID = a.INNERUSERID,
|
||
MEMOCONTENTID = a.MEMOCONTENTID,
|
||
MEMOID = a.MEMOID,
|
||
MEMOSTYLEID = a.MEMOSTYLEID,
|
||
MEMOSUBTYPEID = a.MEMOSUBTYPEID,
|
||
MEMOTYPEID = a.MEMOTYPEID,
|
||
RESID = a.RESID,
|
||
STRCONTENT = b.STRCONTENT
|
||
}
|
||
).OrderByDescending(m => m.CTIME);
|
||
return obj.ToList();
|
||
}
|
||
}
|
||
#endregion
|
||
#region 获取所有的工单
|
||
public List<WX.CRM.Model.QueryMap.ORD_MemoQuery> GetAllMemoListByResId(ref Pager pager, string ResId)
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
//var queryData = db.ORD_SERVICEMEMO.Union(db.ORD_PURPOSEMEMO).Union(db.ORD_SALEMEMO).Union(db.ORD_SPECIALMEMO).AsQueryable();
|
||
//queryData = queryData.OrderByDescending(m => m.MEMOID);
|
||
//queryData = queryData.Where(m => m.RESID == ResId);
|
||
//PagerUtil.SetPager<Model.Entity.ORD_SERVICEMEMO>(ref queryData, ref pager);
|
||
var queryData = (from a in db.ORD_PURPOSEMEMO.Where(m => m.RESID == ResId)
|
||
join b in db.ORD_MEMOCONTENT on a.MEMOCONTENTID equals b.CONTENTID
|
||
join c in db.RES_CUSTOMERDETAIL on a.RESID equals c.RESID
|
||
select new ORD_MemoQuery()
|
||
{
|
||
BUSINESSID = a.BUSINESSID,
|
||
CALLTIME = a.CALLTIME,
|
||
CALLTIMEEND = a.CALLTIMEEND,
|
||
CNAME = c.CNAME,
|
||
CTIME = a.CTIME,
|
||
INNERUSERID = a.INNERUSERID,
|
||
MEMOCONTENTID = a.MEMOCONTENTID,
|
||
MEMOID = a.MEMOID,
|
||
MEMOSTYLEID = a.MEMOSTYLEID,
|
||
MEMOSUBTYPEID = a.MEMOSUBTYPEID,
|
||
MEMOTYPEID = a.MEMOTYPEID,
|
||
RESID = a.RESID,
|
||
STRCONTENT = b.STRCONTENT,
|
||
MEMO_TYPE = 2
|
||
}
|
||
).OrderByDescending(m => m.CTIME).Union((
|
||
from a in db.ORD_SALEMEMO.Where(m => m.RESID == ResId)
|
||
join b in db.ORD_MEMOCONTENT on a.MEMOCONTENTID equals b.CONTENTID
|
||
join c in db.RES_CUSTOMERDETAIL on a.RESID equals c.RESID
|
||
select new ORD_MemoQuery()
|
||
{
|
||
BUSINESSID = a.BUSINESSID,
|
||
CALLTIME = a.CALLTIME,
|
||
CALLTIMEEND = a.CALLTIMEEND,
|
||
CNAME = c.CNAME,
|
||
CTIME = a.CTIME,
|
||
INNERUSERID = a.INNERUSERID,
|
||
MEMOCONTENTID = a.MEMOCONTENTID,
|
||
MEMOID = a.MEMOID,
|
||
MEMOSTYLEID = a.MEMOSTYLEID,
|
||
MEMOSUBTYPEID = a.MEMOSUBTYPEID,
|
||
MEMOTYPEID = a.MEMOTYPEID,
|
||
RESID = a.RESID,
|
||
STRCONTENT = b.STRCONTENT,
|
||
MEMO_TYPE = 0
|
||
}).OrderByDescending(m => m.CTIME)
|
||
).Union((
|
||
from a in db.ORD_SERVICEMEMO.Where(m => m.RESID == ResId)
|
||
join b in db.ORD_MEMOCONTENT on a.MEMOCONTENTID equals b.CONTENTID
|
||
join c in db.RES_CUSTOMERDETAIL on a.RESID equals c.RESID
|
||
select new ORD_MemoQuery()
|
||
{
|
||
BUSINESSID = a.BUSINESSID,
|
||
CALLTIME = a.CALLTIME,
|
||
CALLTIMEEND = a.CALLTIMEEND,
|
||
CNAME = c.CNAME,
|
||
CTIME = a.CTIME,
|
||
INNERUSERID = a.INNERUSERID,
|
||
MEMOCONTENTID = a.MEMOCONTENTID,
|
||
MEMOID = a.MEMOID,
|
||
MEMOSTYLEID = a.MEMOSTYLEID,
|
||
MEMOSUBTYPEID = a.MEMOSUBTYPEID,
|
||
MEMOTYPEID = a.MEMOTYPEID,
|
||
RESID = a.RESID,
|
||
STRCONTENT = b.STRCONTENT,
|
||
MEMO_TYPE = 1
|
||
}).OrderByDescending(m => m.CTIME)
|
||
).Union((
|
||
from a in db.ORD_SPECIALMEMO.Where(m => m.RESID == ResId)
|
||
join b in db.ORD_MEMOCONTENT on a.MEMOCONTENTID equals b.CONTENTID
|
||
join c in db.RES_CUSTOMERDETAIL on a.RESID equals c.RESID
|
||
select new ORD_MemoQuery()
|
||
{
|
||
BUSINESSID = a.BUSINESSID,
|
||
CALLTIME = a.CALLTIME,
|
||
CALLTIMEEND = a.CALLTIMEEND,
|
||
CNAME = c.CNAME,
|
||
CTIME = a.CTIME,
|
||
INNERUSERID = a.INNERUSERID,
|
||
MEMOCONTENTID = a.MEMOCONTENTID,
|
||
MEMOID = a.MEMOID,
|
||
MEMOSTYLEID = a.MEMOSTYLEID,
|
||
MEMOSUBTYPEID = a.MEMOSUBTYPEID,
|
||
MEMOTYPEID = a.MEMOTYPEID,
|
||
RESID = a.RESID,
|
||
STRCONTENT = b.STRCONTENT,
|
||
MEMO_TYPE = 3
|
||
}).OrderByDescending(m => m.CTIME)
|
||
);
|
||
queryData = queryData.OrderByDescending(m => m.CTIME);
|
||
PagerUtil.SetPager<WX.CRM.Model.QueryMap.ORD_MemoQuery>(ref queryData, ref pager);
|
||
return queryData.ToList();
|
||
}
|
||
}
|
||
#endregion
|
||
#region 获取所有的工单
|
||
/// <summary>
|
||
/// 获取所有工单的前第一条数据
|
||
/// </summary>
|
||
/// <param name="ResId"></param>
|
||
/// <returns></returns>
|
||
public List<WX.CRM.Model.QueryMap.ORD_MemoQuery> GetAllMemoListByResId(string ResId)
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
|
||
var queryData = (from a in db.ORD_PURPOSEMEMO.Where(m => m.RESID == ResId)
|
||
join b in db.ORD_MEMOCONTENT on a.MEMOCONTENTID equals b.CONTENTID
|
||
join c in db.RES_CUSTOMERDETAIL on a.RESID equals c.RESID
|
||
select new ORD_MemoQuery()
|
||
{
|
||
BUSINESSID = a.BUSINESSID,
|
||
CALLTIME = a.CALLTIME,
|
||
CALLTIMEEND = a.CALLTIMEEND,
|
||
CNAME = c.CNAME,
|
||
CTIME = a.CTIME,
|
||
INNERUSERID = a.INNERUSERID,
|
||
MEMOCONTENTID = a.MEMOCONTENTID,
|
||
MEMOID = a.MEMOID,
|
||
MEMOSTYLEID = a.MEMOSTYLEID,
|
||
MEMOSUBTYPEID = a.MEMOSUBTYPEID,
|
||
MEMOTYPEID = a.MEMOTYPEID,
|
||
RESID = a.RESID,
|
||
STRCONTENT = b.STRCONTENT,
|
||
MEMO_TYPE = 2
|
||
}
|
||
).OrderByDescending(m => m.CTIME).Take(15).Union((
|
||
from a in db.ORD_SALEMEMO.Where(m => m.RESID == ResId)
|
||
join b in db.ORD_MEMOCONTENT on a.MEMOCONTENTID equals b.CONTENTID
|
||
join c in db.RES_CUSTOMERDETAIL on a.RESID equals c.RESID
|
||
select new ORD_MemoQuery()
|
||
{
|
||
BUSINESSID = a.BUSINESSID,
|
||
CALLTIME = a.CALLTIME,
|
||
CALLTIMEEND = a.CALLTIMEEND,
|
||
CNAME = c.CNAME,
|
||
CTIME = a.CTIME,
|
||
INNERUSERID = a.INNERUSERID,
|
||
MEMOCONTENTID = a.MEMOCONTENTID,
|
||
MEMOID = a.MEMOID,
|
||
MEMOSTYLEID = a.MEMOSTYLEID,
|
||
MEMOSUBTYPEID = a.MEMOSUBTYPEID,
|
||
MEMOTYPEID = a.MEMOTYPEID,
|
||
RESID = a.RESID,
|
||
STRCONTENT = b.STRCONTENT,
|
||
MEMO_TYPE = 0
|
||
}).OrderByDescending(m => m.CTIME).Take(15)
|
||
).Union((
|
||
from a in db.ORD_SERVICEMEMO.Where(m => m.RESID == ResId)
|
||
join b in db.ORD_MEMOCONTENT on a.MEMOCONTENTID equals b.CONTENTID
|
||
join c in db.RES_CUSTOMERDETAIL on a.RESID equals c.RESID
|
||
select new ORD_MemoQuery()
|
||
{
|
||
BUSINESSID = a.BUSINESSID,
|
||
CALLTIME = a.CALLTIME,
|
||
CALLTIMEEND = a.CALLTIMEEND,
|
||
CNAME = c.CNAME,
|
||
CTIME = a.CTIME,
|
||
INNERUSERID = a.INNERUSERID,
|
||
MEMOCONTENTID = a.MEMOCONTENTID,
|
||
MEMOID = a.MEMOID,
|
||
MEMOSTYLEID = a.MEMOSTYLEID,
|
||
MEMOSUBTYPEID = a.MEMOSUBTYPEID,
|
||
MEMOTYPEID = a.MEMOTYPEID,
|
||
RESID = a.RESID,
|
||
STRCONTENT = b.STRCONTENT,
|
||
MEMO_TYPE = 1
|
||
}).OrderByDescending(m => m.CTIME).Take(15)
|
||
).Union((
|
||
from a in db.ORD_SPECIALMEMO.Where(m => m.RESID == ResId)
|
||
join b in db.ORD_MEMOCONTENT on a.MEMOCONTENTID equals b.CONTENTID
|
||
join c in db.RES_CUSTOMERDETAIL on a.RESID equals c.RESID
|
||
select new ORD_MemoQuery()
|
||
{
|
||
BUSINESSID = a.BUSINESSID,
|
||
CALLTIME = a.CALLTIME,
|
||
CALLTIMEEND = a.CALLTIMEEND,
|
||
CNAME = c.CNAME,
|
||
CTIME = a.CTIME,
|
||
INNERUSERID = a.INNERUSERID,
|
||
MEMOCONTENTID = a.MEMOCONTENTID,
|
||
MEMOID = a.MEMOID,
|
||
MEMOSTYLEID = a.MEMOSTYLEID,
|
||
MEMOSUBTYPEID = a.MEMOSUBTYPEID,
|
||
MEMOTYPEID = a.MEMOTYPEID,
|
||
RESID = a.RESID,
|
||
STRCONTENT = b.STRCONTENT,
|
||
MEMO_TYPE = 3
|
||
}).OrderByDescending(m => m.CTIME)
|
||
);
|
||
queryData = queryData.OrderByDescending(m => m.CTIME);
|
||
return queryData.ToList();
|
||
}
|
||
}
|
||
#endregion
|
||
#region 通话录音
|
||
public bool updateList(ref ValidationErrors errors, List<ORD_SERVICEMEMO> models)
|
||
{
|
||
try
|
||
{
|
||
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
foreach (var model in models)
|
||
{
|
||
db.ORD_SERVICEMEMO.Attach(model);
|
||
db.Entry<WX.CRM.Model.Entity.ORD_SERVICEMEMO>(model).State = EntityState.Modified;
|
||
}
|
||
db.SaveChanges();
|
||
return true;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
errors.Add(ex.Message);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
|
||
public List<ORD_SERVICEMEMO> GetNoCallTimeByMemoId(decimal[] MemoIds)
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
return db.ORD_SERVICEMEMO.Where(p => MemoIds.Contains(p.MEMOID) && (!p.CALLTIME.HasValue || !p.CALLTIMEEND.HasValue)).ToList();
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
|
||
|
||
public bool Delete_ServiceMemo(ref ValidationErrors errors, decimal memoId)
|
||
{
|
||
try
|
||
{
|
||
using (var db = new crmContext())
|
||
{
|
||
ORD_SERVICEMEMO entity = db.ORD_SERVICEMEMO.FirstOrDefault(m => m.MEMOID == memoId);
|
||
CACHE_ORD_MEMO cache_Memo = db.CACHE_ORD_MEMO.FirstOrDefault(m => m.MEMOID == memoId);
|
||
if (entity == null)
|
||
{
|
||
errors.Add("数据不存在!");
|
||
return false;
|
||
}
|
||
db.ORD_SERVICEMEMO.Remove(entity);
|
||
if (cache_Memo != null)
|
||
{
|
||
db.CACHE_ORD_MEMO.Remove(cache_Memo);
|
||
}
|
||
return db.SaveChanges().GetResult();
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
errors.Add(ex.Message);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
|
||
#region 合规工单
|
||
public List<ORD_SERVICEMEMO> GetHgServiceMemo(decimal Memoid, decimal memosubtypeId)
|
||
{
|
||
using (var db = new crmContext())
|
||
{
|
||
return db.ORD_SERVICEMEMO.Where(p => p.MEMOSUBTYPEID == memosubtypeId && p.MEMOID > Memoid).ToList();
|
||
}
|
||
}
|
||
#endregion
|
||
public ORD_SERVICEMEMO GetHgServiceModel(decimal Memoid)
|
||
{
|
||
using (var db = new crmContext())
|
||
{
|
||
return db.ORD_SERVICEMEMO.FirstOrDefault(p => p.MEMOID == Memoid);
|
||
}
|
||
}
|
||
|
||
|
||
public Dictionary<string, LastServerMemoInfo> GetLastServerMemo(IEnumerable<string> resids)
|
||
{
|
||
using (var db = new crmContext())
|
||
{
|
||
if (resids == null || !resids.Any())
|
||
return new Dictionary<string, LastServerMemoInfo>();
|
||
|
||
// 修改点1:将SqlParameter改为OracleParameter
|
||
var parameters = resids.Select((r, i) => new OracleParameter($":p{i}", r)).ToArray();
|
||
var inClause = string.Join(",", parameters.Select(p => p.ParameterName));
|
||
|
||
var sql = $@"
|
||
SELECT s.RESID, s.INNERUSERID, s.CTIME
|
||
FROM ORD_SERVICEMEMO s
|
||
WHERE s.MEMOID IN (
|
||
SELECT MAX(s2.MEMOID)
|
||
FROM ORD_SERVICEMEMO s2
|
||
WHERE s2.RESID IN ({inClause})
|
||
GROUP BY s2.RESID
|
||
)";
|
||
|
||
// 修改点2:移除不必要的类型转换
|
||
//return db.Database.SqlQuery<LastServerMemoResult>(sql, parameters)
|
||
// .ToDictionary(
|
||
// k => k.RESID,
|
||
// v => new LastServerMemoInfo
|
||
// {
|
||
// UserId = v.INNERUSERID,
|
||
// Ctime = v.CTIME
|
||
// });
|
||
var list = OracleHelper.DataQueray(CommandType.Text, sql, parameters).Tables[0].ToList<LastServerMemoResult>();
|
||
return list.ToDictionary(
|
||
k => k.RESID,
|
||
v => new LastServerMemoInfo
|
||
{
|
||
UserId = v.INNERUSERID,
|
||
Ctime = v.CTIME
|
||
});
|
||
}
|
||
}
|
||
|
||
|
||
#region addtoRedis
|
||
private void AddToRedis(ORD_MEMOCONTENT entry, CACHE_ORD_MEMO cacheOrd, bool result = true)
|
||
{
|
||
redisBl.AddRedis_Ord_Memocontent(entry, out result);
|
||
redisBl.AddRedis_Resid_Memoid(cacheOrd.RESID, cacheOrd.MEMOID, out result);
|
||
redisBl.AddRedis_CacheOrdMemo(cacheOrd, 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 = "ord_memocontent";
|
||
redisMoel1.KEYS = entry.CONTENTID.ToString();
|
||
redisMoel1.OPTYPE = "A";
|
||
redisMoel1.TIME = DateTime.Now;
|
||
redisMoel1.LASTSYNCTIME = DateTime.Now;
|
||
redisMoel1.ERRNUM = 0;
|
||
redisMoel1.ERRMSG = "";
|
||
cacheBL.Create_RedisCacheSSODataSYNC(redisMoel1);
|
||
|
||
REDIS_CACHE_SSODATASYNC redisMoel2 = new REDIS_CACHE_SSODATASYNC();
|
||
redisMoel2.TABLETYPE = "cache_ord_memo";
|
||
redisMoel2.KEYS = cacheOrd.MEMOID.ToString();
|
||
redisMoel2.OPTYPE = "A";
|
||
redisMoel2.TIME = DateTime.Now;
|
||
redisMoel2.LASTSYNCTIME = DateTime.Now;
|
||
redisMoel2.ERRNUM = 0;
|
||
redisMoel2.ERRMSG = "";
|
||
cacheBL.Create_RedisCacheSSODataSYNC(redisMoel2);
|
||
|
||
REDIS_CACHE_SSODATASYNC redisMoel3 = new REDIS_CACHE_SSODATASYNC();
|
||
redisMoel3.TABLETYPE = "resid_memoid_redis";
|
||
redisMoel3.KEYS = cacheOrd.MEMOID.ToString();
|
||
redisMoel3.OPTYPE = "A";
|
||
redisMoel3.TIME = DateTime.Now;
|
||
redisMoel3.LASTSYNCTIME = DateTime.Now;
|
||
redisMoel3.ERRNUM = 0;
|
||
redisMoel3.ERRMSG = "";
|
||
cacheBL.Create_RedisCacheSSODataSYNC(redisMoel3);
|
||
#endregion
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
|
||
public class ORD_SERVICEMEMO_EXT_BL : DbContextRepository<ORD_SERVICEMEMO_EXT>, IORD_SERVICEMEMO_EXT
|
||
{
|
||
|
||
}
|
||
}
|