TG.WXCRM.V4/BLL/Ord/ORD_SERVICEMEMO_BL.cs

679 lines
32 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
{
}
}