using Core.Common; using CRM.Core.BLL.Util; using CRM.Core.Common.Layui; using CRM.Core.DAL; using CRM.Core.DAL.Order; using CRM.Core.DTO; using CRM.Core.Model; using CRM.Core.Model.Entity; using CRM.Core.Model.Enum; using MySql.Data.MySqlClient; using Newtonsoft.Json; using NPOI.SS.Formula.Functions; using ServiceStack; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.IO; using System.Linq; using System.Linq.Expressions; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using System.Web.UI.WebControls.WebParts; using WX.CRM.Common; using WX.CRM.Common.Employee; using WX.CRM.Model.DTO; namespace CRM.Core.BLL.Wx { public class WX_SZZYORDER_BL : DbContextRepository { private WX_SZZYORDER_DAL _dal = new WX_SZZYORDER_DAL(); private WX_PRODUCT_BL _product = new WX_PRODUCT_BL(); private CACHE_BL cache_BL = new CACHE_BL(); public WX_SZZYORDER GetModel(decimal orderid) { using (zxdContext db = new zxdContext()) { return db.WX_SZZYORDER.FirstOrDefault(m => m.ORDERID == orderid); } } public WX_SZZYORDER GetModelBySzId(decimal szzyid) { using (zxdContext db = new zxdContext()) { return db.WX_SZZYORDER.FirstOrDefault(m => m.SZZYORDERID == szzyid); } } public IList GetModelByResId(string resid) { using (zxdContext db = new zxdContext()) { var residStr = db.RES_CUSTOMER.Where(x => x.UMID == resid).FirstOrDefault()?.RESID; return db.WX_SZZYORDER.Where(m => m.RESID == residStr).ToList(); } } public List GetElderlyInvestmentOrders(string resid) { //var now = DateTime.Now.AddDays(-7); using (zxdContext db = new zxdContext()) { var residStr = db.RES_CUSTOMER.Where(x => x.UMID == resid).FirstOrDefault()?.RESID; var status = new int[] { 1, 9 }; //var query = from a in db.USER_PROTOCOL_ORDER // join b in db.SYS_USER_PROTOCOL on a.ProtocolId equals b.ID into tmpab // from ab in tmpab.DefaultIfEmpty() // where status.Contains(ab.STATUS) // select new { a.Orderid }; //List notStatus = new List() { "60", "70", "90" }; List notStatus = new List() { "70" }; //var query = db.WX_SZZYORDER.Where(x => x.RESID == resid && new List { "180", "190", "200" }.Contains(x.ORDERSTATUS) && x.CTIME > now && !db.USER_PROTOCOL_ORDER.Select(y => y.Orderid).Contains(x.ORDERID)); return db.WX_SZZYORDER.Where(x => x.RESID == residStr && !notStatus.Contains(x.ORDERSTATUS) && !db.USER_PROTOCOL_ORDER.Select(y => y.Orderid).Contains(x.ORDERID)) .OrderByDescending(x => x.CTIME) .Select(x => new ElderlyInvestmentOrder { ORDERID = x.ORDERID, CNAME = x.CNAME, SOFTUSERNAME = x.SOFTUSERNAME }).ToList(); } } public class ElderlyInvestmentOrder { public decimal ORDERID { get; set; } public string CNAME { get; set; } public string SOFTUSERNAME { get; set; } } /// /// 存储订单选择企业微信外部联系人数据 /// /// /// /// /// public void UpdateOrInsertOrderExtuserId(Ww_SzzyOrder_ExtUserId model) { try { using (var db = new zxdContext()) { var entry = db.Ww_SzzyOrder_ExtUserId.FirstOrDefault(m => m.orderid == model.orderid); if (entry == null) { model.ctime = DateTime.Now; db.Ww_SzzyOrder_ExtUserId.Add(model); } else { entry.utime = DateTime.Now; entry.userid = model.userid; entry.extuserid = model.extuserid; entry.corpid = model.corpid; } db.SaveChanges(); } } catch (Exception e) { LogHelper.Error(e.ToString()); } } public List GetList(ref Laypage pager, OrderQueryDto dto) { CACHE_BL cache_BL = new CACHE_BL(); var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); //webapi = "https://localhost:7090"; var url = $"{webapi}/Order/Page"; var para = $"{dto.GetParamToString()}&PageIndex={pager.page}&PageSize={pager.limit}"; //LogHelper.Info($"发送地址=>{url}{para}"); var result = Utility.GetData(url, para, Encoding.UTF8); var data = JsonConvert.DeserializeObject>>(result); if (data.code == 0) { pager.count = data.data.Total; return data.data.Data; } return new List(); } public DateTime GetAiStartTime() { try { CACHE_BL cache_BL = new CACHE_BL(); var robotList = cache_BL.GetAiRobotList(); var startTime = robotList.FirstOrDefault().StartTime; return startTime; } catch (Exception ex) { LogHelper.Error("获取Ai配置时间错误" + ex.Message); return Convert.ToDateTime("2021-12-01 00:00:00"); } } public List GetAiStatusByOrderIds(List ids, List resIds) { using (var db = new zxdContext()) { var queryData = db.WX_SZZYORDER.Where(n => ids.Contains(n.ORDERID)).ToList(); var szzyOrderIds = queryData.Select(n => n.SZZYORDERID).ToList(); var qcList = db.WX_ComplianceConfirm.Where(n => szzyOrderIds.Contains(n.SzzyOrderId)).ToList(); //获取配置 CACHE_BL cache_BL = new CACHE_BL(); var config = cache_BL.GetAICallTaskConfigList().FirstOrDefault(); var recall = config.ReCallMins.Count() > 0 ? true : false; if (resIds.Count() > 0) { //取当天的订单 var date = DateTime.Now.Date; var startTime = GetAiStartTime(); queryData = db.WX_SZZYORDER.Where(d => d.ORDERSTATUS.Equals("200") && d.contractctime >= startTime && d.idcard != null && (d.hashgrecord == null || d.hashgrecord != 1) && d.CTIME >= date && resIds.Contains(d.RESID)).ToList(); } List waitStatus = new List { (int)EnumAiCallState.等待AI外呼, (int)EnumAiCallState.等待AI重拨, (int)EnumAiCallState.已提交AI外呼, }; //如果有设置重拨 则 归类到 待ai外呼 否则归类到 需人工介入 if (recall && config.ReCallStatus.Count > 0) { waitStatus.AddRange(config.ReCallStatus); } List res = new List(); foreach (var q in queryData) { WX_SZZYORDER_AIStatusView view = new WX_SZZYORDER_AIStatusView(); view.ORDERID = q.ORDERID; view.ai_hgrecord_stime = q.ai_hgrecord_stime; view.ai_hgrecord_etime = q.ai_hgrecord_etime; view.ai_hgrecord_statusname = q.ai_hgrecord_statusname; var qc = qcList.FirstOrDefault(n => n.SzzyOrderId == q.SZZYORDERID); view.ai_hgrecord_status = q.ai_hgrecord_status; if (qc != null) { view.ai_hgrecord_status = (int)EnumAiCallState.电子回访成功; view.ai_hgrecord_statusname = EnumAiCallState.电子回访成功.ToString(); } if (waitStatus.Contains(q.ai_hgrecord_status)) { view.hasbtn = 1; } if (!string.IsNullOrWhiteSpace(q.ai_hgrecord_stime) && q.ai_hgrecord_stime.IndexOf(":") > 0) { view.startTime = Convert.ToInt32(q.ai_hgrecord_stime.Split(':')[0]) * 60 + Convert.ToInt32(q.ai_hgrecord_stime.Split(':')[1]); } if (!string.IsNullOrWhiteSpace(q.ai_hgrecord_etime) && q.ai_hgrecord_etime.IndexOf(":") > 0) { view.endTime = Convert.ToInt32(q.ai_hgrecord_etime.Split(':')[0]) * 60 + Convert.ToInt32(q.ai_hgrecord_etime.Split(':')[1]); } res.Add(view); } return res; } } /// /// 获取Ai录音 /// /// /// /// /// public List GetAiAudioRecordByResId(int page, int limit, string resId) { using (var db = new zxdContext()) { var customer = db.RES_CUSTOMER.FirstOrDefault(n => n.RESID == resId); var number = customer == null ? "" : customer.LASTNUM3; var query = from n in db.Csvr_Ai_CallTask where n.Resid == resId select new AiAudioRecord { Id = n.Id, Robot = n.Robot, Phone = number, SvcTime = n.SvcTime, StartTime = n.StartTime, EndTime = n.EndTime, FileName = n.Audio }; query = query.OrderByDescending(n => n.StartTime).Skip((page - 1) * limit).Take(limit); return query.ToList(); } } public List GetList(ref Laypage pager, decimal orderId, decimal orderType, DateTime stime, DateTime etime, string orderStatus, string resId, string companyCode, decimal szzyOrderId, int productId, int subProductId, string channel, int aiCallType, DateTime? aistime, DateTime? aietime) { var dto = new OrderQueryDto() { orderId = orderId > 0 ? orderId : (decimal?)null, orderType = orderType > 0 ? orderType : (decimal?)null, stime = stime == DateTime.MinValue ? (DateTime?)null : stime, etime = etime == DateTime.MinValue ? (DateTime?)null : etime, orderStatus = orderStatus, resId = resId, companyCode = companyCode, szzyOrderId = szzyOrderId > 0 ? szzyOrderId : (decimal?)null, productId = productId > 0 ? productId : (int?)null, subProductId = subProductId > 0 ? subProductId : (int?)null, channel = channel, aiCallStatus = aiCallType, aistime = aistime == DateTime.MinValue ? (DateTime?)null : aistime, aietime = aietime == DateTime.MinValue ? (DateTime?)null : aietime }; return GetList(ref pager, dto); } /// /// 获取客户资料页关联企业微信的外部联系人数据 /// /// /// public List GetExtuser(List resids) { using (var db = new zxdContext()) { List list = new List(); foreach (var item in resids) { var ss = (from x in db.Ww_Extuser_Resid join a in db.RES_CUSTOMER on x.resid equals a.RESID join b in db.RES_CUSTOMER on a.CUSTOMERID equals b.CUSTOMERID where b.RESID == item select x).ToList(); foreach (var ax in ss) { ax.resid = item; } list.AddRange(ss); } return list; } } /// /// 获取客户资料页关联微信数据 /// /// /// public List GetWxUserName(List resids) { using (var db = new zxdContext()) { return db.Wx_Username_Resid.Where(m => resids.Contains(m.resid)).ToList(); } } public List GetUnPayList(int dayInterval) { using (var db = new zxdContext()) { var queryData = db.WX_SZZYORDER.AsQueryable(); DateTime dt = DateTime.Now.AddDays(-dayInterval); queryData = queryData.Where(m => m.CTIME < dt && m.ORDERSTATUS == "180"); return queryData.OrderBy(m => m.CTIME).ToList(); } } public List GetExpireOrderList() { using (var db = new zxdContext()) { var queryData = db.WX_SZZYORDER.AsQueryable(); DateTime dt = DateTime.Now; queryData = queryData.Where(m => m.ENDTIME < dt && m.ORDERSTATUS == "220"); return queryData.OrderBy(m => m.CTIME).ToList(); } } public DataSet GetCompanyOrderPayList(DateTime startTime, DateTime endTime, int channelMin, int channelMax) { return _dal.GetCompanyOrderPay(startTime, endTime, channelMin, channelMax); } public List GetCompanyOrderPayList(DateTime startTime, DateTime endTime, string channel) { var fTime = endTime.AddDays(-1); using (var db = new zxdContext()) { var query = from o in db.WX_SZZYORDER join f in db.WX_SzzyOrderRefund.Where(p => p.auditstatus == 1 && p.isdelete == 0) on o.ORDERID equals f.orderid into ofTmp from of in ofTmp.DefaultIfEmpty() where o.ARRIVALTIME >= startTime && o.ARRIVALTIME < endTime && (o.ISOPEN == 1 || o.ORDERSTATUS == "200" || (o.ORDERSTATUS == "90" && of.refunddate > fTime)) select o; if (!string.IsNullOrEmpty(channel)) { var arr0 = channel.Split('|'); if (arr0.Length > 1) { var predicates = new List>>(); foreach (var item in arr0) { var a = item.Split(','); var min = Convert.ToInt32(a[0]); var max = Convert.ToInt32(a[1]); predicates.Add(m => m.CHANNEL >= min && m.CHANNEL <= max); } query = query.WhereOR(predicates.ToArray()); } else { var arr = channel.Split(','); var min = Convert.ToInt32(arr[0]); var max = Convert.ToInt32(arr[1]); query = query.Where(m => m.CHANNEL >= min && m.CHANNEL <= max); } } var data = new List(); foreach (var item in query.ToList()) { data.Add(new OrderInfoView() { ORDERID = Convert.ToInt32(item.ORDERID), SZZYORDERID = Convert.ToInt64(item.SZZYORDERID), RESID = item.RESID, CNAME = item.CNAME, SOFTUSERNAME = item.SOFTUSERNAME, SUBPRODUCTNAME = item.SUBPRODUCTNAME, OTIME = item.OTIME, ARRIVALPAY = item.ARRIVALPAY.Value, ARRIVALTIME = item.ARRIVALTIME.Value }); } return data.Distinct().ToList(); } } public DataSet GetCompanyOrderPayList2(DateTime startTime, DateTime endTime, int channelMin, int channelMax) { return _dal.GetCompanyOrderPay2(startTime, endTime, channelMin, channelMax); } public List GetCompanyOrderPayList2(DateTime startTime, DateTime endTime, string channel) { var fTime = endTime.AddDays(-1); using (var db = new zxdContext()) { var query0 = from o in db.WX_SZZYORDER join p in db.WX_SzzyOrderPay on o.ORDERID equals p.orderid where (o.ISOPEN == 1 || o.ORDERSTATUS == "200") && o.ARRIVALTIME >= startTime && o.ARRIVALTIME < endTime && p.auditstatus == 1 && p.paydate >= startTime && p.paydate < endTime select new OrderInfoView { ORDERID = o.ORDERID, SZZYORDERID = o.SZZYORDERID, RESID = o.RESID, CNAME = o.CNAME, SOFTUSERNAME = o.SOFTUSERNAME, SUBPRODUCTNAME = o.SUBPRODUCTNAME, OTIME = o.OTIME, ARRIVALPAY = p.payprice, ARRIVALTIME = o.ARRIVALTIME.Value, CHANNEL = o.CHANNEL, PAYNO = p.payno }; var query1 = from o in db.WX_SZZYORDER join f in db.WX_SzzyOrderRefund.Where(p => p.auditstatus == 1 && p.isdelete == 0) on o.ORDERID equals f.orderid join p in db.WX_SzzyOrderPay on o.ORDERID equals p.orderid where p.auditstatus == 1 && o.ARRIVALTIME >= startTime && o.ARRIVALTIME < endTime && (o.ISOPEN == 1 || o.ORDERSTATUS == "200" || (o.ORDERSTATUS == "90" && f.refunddate > fTime)) select new OrderInfoView { ORDERID = o.ORDERID, SZZYORDERID = o.SZZYORDERID, RESID = o.RESID, CNAME = o.CNAME, SOFTUSERNAME = o.SOFTUSERNAME, SUBPRODUCTNAME = o.SUBPRODUCTNAME, OTIME = o.OTIME, ARRIVALPAY = p.payprice, ARRIVALTIME = o.ARRIVALTIME.Value, CHANNEL = o.CHANNEL, PAYNO = p.payno }; if (!string.IsNullOrEmpty(channel)) { var arr0 = channel.Split('|'); if (arr0.Length > 1) { var predicates = new List>>(); foreach (var item in arr0) { var a = item.Split(','); var min = Convert.ToInt32(a[0]); var max = Convert.ToInt32(a[1]); predicates.Add(m => m.CHANNEL >= min && m.CHANNEL <= max); } query0 = query0.WhereOR(predicates.ToArray()); query1 = query1.WhereOR(predicates.ToArray()); } else { var arr = channel.Split(','); var min = Convert.ToInt32(arr[0]); var max = Convert.ToInt32(arr[1]); query0 = query0.Where(m => m.CHANNEL >= min && m.CHANNEL <= max); query1 = query1.Where(m => m.CHANNEL >= min && m.CHANNEL <= max); } } return query0.ToList().Union(query1.ToList(), new OrderInfoViewComparer()).Distinct().ToList(); //var q0 = new List(); //foreach (var item in query0.ToList()) //{ // q0.Add(new OrderInfoView() // { // ORDERID = Convert.ToInt32(item.ORDERID), // SZZYORDERID = Convert.ToInt64(item.SZZYORDERID), // RESID = item.RESID, // CNAME = item.CNAME, // SOFTUSERNAME = item.SOFTUSERNAME, // SUBPRODUCTNAME = item.SUBPRODUCTNAME, // OTIME = item.OTIME, // ARRIVALPAY = item.ARRIVALPAY.Value, // ARRIVALTIME = item.ARRIVALTIME.Value // }); //} //var q1 = new List(); //foreach (var item in query1.ToList()) //{ // q1.Add(new OrderInfoView() // { // ORDERID = Convert.ToInt32(item.ORDERID), // SZZYORDERID = Convert.ToInt64(item.SZZYORDERID), // RESID = item.RESID, // CNAME = item.CNAME, // SOFTUSERNAME = item.SOFTUSERNAME, // SUBPRODUCTNAME = item.SUBPRODUCTNAME, // OTIME = item.OTIME, // ARRIVALPAY = item.ARRIVALPAY.Value, // ARRIVALTIME = item.ARRIVALTIME.Value // }); //} //return q0.Union(q1, new OrderInfoViewComparer()).Distinct().ToList(); } } public List GetThirdOrderList(string outOrderNo, int openPlatType) { using (var db = new zxdContext()) { var queryData = db.WX_SZZYORDER.AsQueryable(); queryData = queryData.Where(m => m.outorderno == outOrderNo); var query = from t0 in queryData join t1 in db.WX_SZZYSUBPRODUCT on t0.SUBPRODUCTID equals t1.SUBPRODUCTID where t0.outorderno == outOrderNo && t1.ThirdOrderCate == openPlatType select t0; return query.ToList(); } } public List GetOpenOrder(string starttime, string endtime) { //DateTime? stime = null; //DateTime? etime = null; //if (!string.IsNullOrEmpty(starttime)) //{ // stime = DateTime.Parse(starttime); //} //if (!string.IsNullOrEmpty(endtime)) //{ // etime = DateTime.Parse(endtime); //} //var stime = DateTime.Parse("2021-01-01"); var arr = new List { "220", "205", "80", "90" }; var list = new List(); using (var db = new zxdContext()) { var queryData = from o in db.WX_SZZYORDER join p in db.Wx_SzzyOrderPayExt on o.ORDERID equals p.orderid into opTmp from op in opTmp.DefaultIfEmpty() //where arr.Contains(o.ORDERSTATUS) && o.OTIME < time //where arr.Contains(o.ORDERSTATUS) && (o.OTIME < stime || (o.OTIME == null && o.ARRIVALTIME < stime)) where arr.Contains(o.ORDERSTATUS) //where arr.Contains(o.ORDERSTATUS) && o.OTIME.HasValue select new OrderModel { WX_SZZYORDER = o, arrivalpay = op.arrivalpay }; //queryData = queryData.Where(p => arr.Contains(p.ORDERSTATUS)); //if (stime.HasValue && !etime.HasValue) //{ // list = queryData.Where(p => p.WX_SZZYORDER.OTIME >= stime).ToList(); //} //else if (!stime.HasValue && etime.HasValue) //{ // list = queryData.Where(p => p.WX_SZZYORDER.OTIME < etime).ToList(); //} //else if (stime.HasValue && etime.HasValue) //{ // list = queryData.Where(p => p.WX_SZZYORDER.OTIME >= stime && p.WX_SZZYORDER.OTIME < etime).ToList(); //} //else //{ // list = queryData.ToList(); //} list = queryData.ToList(); //var queryData2 = from o in db.WX_SZZYORDER // join p in db.Wx_SzzyOrderPayExt on o.ORDERID equals p.orderid into opTmp // from op in opTmp.DefaultIfEmpty() // //where arr.Contains(o.ORDERSTATUS) && o.OTIME < time // where arr.Contains(o.ORDERSTATUS) && o.OTIME != null && o.OTIME >= stime && !db.wx_excludeorder.Any(p=>p.orderid == o.ORDERID) // select new OrderModel { WX_SZZYORDER = o, arrivalpay = op.arrivalpay }; //var list2 = queryData2.ToList(); ////var removeOrder = db.wx_excludeorder.ToList(); //list.AddRange(list2); var productArr = new List() { 100743,100729,100730,100750,100719,100936,100747,100727,100726,100724,100725,100718 }; var data = new List(); foreach (var item in list) { var info = new OpenOrder() { orderid = Convert.ToInt32(item.WX_SZZYORDER.ORDERID), otime = item.WX_SZZYORDER.OTIME == null ? item.WX_SZZYORDER.ARRIVALTIME.Value : item.WX_SZZYORDER.OTIME.Value, opday = Convert.ToDateTime((item.WX_SZZYORDER.OTIME == null ? item.WX_SZZYORDER.ARRIVALTIME.Value : item.WX_SZZYORDER.OTIME.Value).ToString("d")), orderday = (item.WX_SZZYORDER.OTIME == null ? item.WX_SZZYORDER.ARRIVALTIME.Value : item.WX_SZZYORDER.OTIME.Value).ToString("d"), ordermonth = int.Parse((item.WX_SZZYORDER.OTIME == null ? item.WX_SZZYORDER.ARRIVALTIME.Value : item.WX_SZZYORDER.OTIME.Value).ToString("yyyyMM")), orderyear = int.Parse((item.WX_SZZYORDER.OTIME == null ? item.WX_SZZYORDER.ARRIVALTIME.Value : item.WX_SZZYORDER.OTIME.Value).ToString("yyyy")), channel = item.WX_SZZYORDER.CHANNEL, arrivalpay = item.WX_SZZYORDER.ARRIVALPAY.Value, opendays = Convert.ToInt32(item.WX_SZZYORDER.OPENDAYS.Value), endday = Convert.ToDateTime((item.WX_SZZYORDER.OTIME == null ? item.WX_SZZYORDER.ARRIVALTIME.Value : item.WX_SZZYORDER.OTIME.Value).AddDays(Convert.ToInt32(item.WX_SZZYORDER.OPENDAYS.Value)).ToString("d")), productid = item.WX_SZZYORDER.PRODUCTID.Value, settletype = item.WX_SZZYORDER.SettleType.Value, atime = item.WX_SZZYORDER.ARRIVALTIME.Value, amonth = int.Parse(item.WX_SZZYORDER.ARRIVALTIME.Value.ToString("yyyyMM")) , upgradeorderids = item.WX_SZZYORDER.UPGRADEORDERIDS }; if (item.arrivalpay.HasValue) info.arrivalpay = item.arrivalpay.Value; if (item.WX_SZZYORDER.CHANNEL >= 26800 && item.WX_SZZYORDER.CHANNEL <= 26899) { info.settletype = 1009;//变成分期结算 } if (productArr.Any(p => p == item.WX_SZZYORDER.SUBPRODUCTID)) { info.settletype = 1009; } info.opendays = Convert.ToInt32(item.WX_SZZYORDER.OPENDAYS.Value) + (item.WX_SZZYORDER.giftdays ?? 0); info.endday = Convert.ToDateTime((item.WX_SZZYORDER.OTIME == null ? item.WX_SZZYORDER.ARRIVALTIME.Value : item.WX_SZZYORDER.OTIME.Value).AddDays(info.opendays).ToString("d")); data.Add(info); } //if (stime.HasValue && !etime.HasValue) //{ // return data.Where(p => p.otime >= stime).ToList(); //} //else if (!stime.HasValue && etime.HasValue) //{ // return data.Where(p => p.otime < etime).ToList(); //} //else if (stime.HasValue && etime.HasValue) //{ // return data.Where(p => p.otime >= stime && p.otime < etime).ToList(); //} return data.OrderBy(p => p.orderid).ToList(); } } public List GetDzOrder2(string starttime, string endtime) { //DateTime? stime = null; //DateTime? etime = null; //if (!string.IsNullOrEmpty(starttime)) //{ // stime = DateTime.Parse(starttime); //} //if (!string.IsNullOrEmpty(endtime)) //{ // etime = DateTime.Parse(endtime); //} var list = new List(); //var stime = DateTime.Parse("2021-01-01"); using (var db = new zxdContext()) { var query = from p in db.WX_SzzyOrderPay join o in db.WX_SZZYORDER on p.orderid equals o.ORDERID into poTmp from po in poTmp.DefaultIfEmpty() join f in (from f in db.WX_SzzyOrderRefund where f.auditstatus == 1 select f) on p.orderid equals f.orderid into pfTmp from pf in pfTmp.DefaultIfEmpty() join d in (from d in db.WX_SzzyOrderDeposit where d.auditstatus == 1 select d) on p.orderid equals d.orderid into pdTmp from pd in pdTmp.DefaultIfEmpty() where p.auditstatus == 1 && p.paydate != null select new DzOrder2() { orderid = p.orderid, paytime = p.paydate.Value, payprice = p.payprice, productid = po.PRODUCTID.HasValue ? po.PRODUCTID.Value : 0, //productid = po.SettleType.HasValue ? po.SettleType.Value : 1008, payno = p.payno, otime = po.OTIME, orderstatus = po.ORDERSTATUS, ftime = pf.refunddate, isuse = pd.isuse, atime = po.ARRIVALTIME, paytype = p.paytype, channel = p.channel.Value }; //LogHelper.Info("query1:" + query.ToString()); //if (stime.HasValue && !etime.HasValue) //{ // list = query.Where(p => p.otime >= stime || p.otime == null).Distinct().ToList(); //} //else if (!stime.HasValue && etime.HasValue) //{ // list = query.Where(p => p.otime < etime || p.otime == null).Distinct().ToList(); //} //else if (stime.HasValue && etime.HasValue) //{ // list = query.Where(p => (p.otime >= stime && p.otime < etime) || p.otime == null).Distinct().ToList(); //} //else //{ // list = query.Distinct().ToList(); //} list = query.Distinct().ToList(); //LogHelper.Info("query2:" + query.ToString()); foreach (var item in list) { item.paymonth = int.Parse(item.paytime.ToString("yyyyMM")); if (item.otime.HasValue) item.omonth = int.Parse(item.otime.Value.ToString("yyyyMM")); if (item.ftime.HasValue) item.fmonth = int.Parse(item.ftime.Value.ToString("yyyyMM")); if (item.atime.HasValue) item.amonth = int.Parse(item.atime.Value.ToString("yyyyMM")); item.ntime = item.paytime.AddMonths(1); item.nmonth = int.Parse(item.ntime.Value.ToString("yyyyMM")); if (item.paytype == 11) item.payprice = item.payprice * decimal.Parse("0.68607"); else if (item.paytype == 12) item.payprice = item.payprice * decimal.Parse("0.68760"); else if (item.paytype == 13) item.payprice = item.payprice * decimal.Parse("0.686"); if (item.productid == 0) { //订金没有产品,所以只能根据渠道来判断属于什么系列, 27100-27100 首华 if (item.channel >= 27100 && item.channel <= 27199) { item.productid = 1007; } else { item.productid = 1008; } } } return list; } } //public List GetOpenOrder(DateTime sTime, DateTime eTime) //{ // using (var db = new zxdContext()) // { // var queryOrder = (from o in db.WX_SZZYORDER // join p in db.Wx_SzzyOrderPayExt on o.ORDERID equals p.orderid into opTmp // from op in opTmp.DefaultIfEmpty() // join s in db.WX_SZZYSUBPRODUCT on o.SUBPRODUCTID equals s.SUBPRODUCTID into osTmp // from os in osTmp.DefaultIfEmpty() // join r in db.WX_SzzyOrder_Redefine on o.ORDERID equals r.orderid // where o.OTIME >= sTime && o.OTIME < eTime // select new OrderActDto() // { // orderid = o.ORDERID, // username = o.SOFTUSERNAME, // //acttime = o.OTIME.Value, // acttime = r.starttime, // arrivalpay = o.ARRIVALPAY, // opendays = o.OPENDAYS, // giftdays = o.giftdays, // channel = o.CHANNEL, // midproductid = r.midproductid, // refundprice = null, // ordertype = r.ordertype, // isrefund = 0, // sort = 0 // }).ToList(); // var queryRefund = (from f in db.WX_SzzyOrderRefund // join o in db.WX_SZZYORDER on f.orderid equals o.ORDERID // join r in db.WX_SzzyOrder_Redefine on f.orderid equals r.orderid // where f.auditstatus == 1 // select new OrderActDto() // { // orderid = f.orderid, // username = o.SOFTUSERNAME, // //otime = null, // acttime = f.refunddate.Value, // arrivalpay = null, // opendays = o.OPENDAYS, // giftdays = null, // channel = f.channel.Value, // midproductid = r.midproductid, // //refundtime = f.refunddate, // refundprice = f.refundprice, // ordertype = r.ordertype, // isrefund = 1, // sort = 1 // }).ToList(); // queryOrder.AddRange(queryRefund); // return queryOrder.OrderBy(p => p.acttime).ThenBy(p => p.sort).ToList(); // //return query.OrderBy(p => p.otime).ToList(); // } //} public List GetOpenOrderTime(DateTime sTime, DateTime eTime) { using (var db = new zxdContext()) { var queryOrder = (from o in db.WX_SZZYORDER join p in db.Wx_SzzyOrderPayExt on o.ORDERID equals p.orderid into opTmp from op in opTmp.DefaultIfEmpty() //join s in db.WX_SZZYSUBPRODUCT on o.SUBPRODUCTID equals s.SUBPRODUCTID into osTmp //from os in osTmp.DefaultIfEmpty() join r in db.WX_SzzyOrder_Redefine_Time on o.ORDERID equals r.orderid join t in db.Order_Teacher on o.ORDERID equals t.orderid into otTmp from ot in otTmp.DefaultIfEmpty() where o.OTIME >= sTime && o.OTIME < eTime select new OrderActDto() { orderid = Convert.ToInt32(o.ORDERID), username = o.SOFTUSERNAME, acttime = r.starttime, arrivalpay = op.arrivalpay.HasValue ? op.arrivalpay.Value : o.ARRIVALPAY, opendays = Convert.ToInt32(o.OPENDAYS), giftdays = o.giftdays, channel = o.CHANNEL, midproductid = r.midproductid, teacher = ot.teacher, refundprice = null, ordertype = r.ordertype, isrefund = 0, sort = 0, isoneday = r.isoneday, refundtype = null, refundnum = null, ismorepay = 0, otime = o.OTIME.Value }).ToList(); var refund1 = (from f in db.WX_SzzyOrderRefund where f.auditstatus == 1 && f.ismorepay == 0 select f).ToList(); var refund2 = (from f in db.WX_SzzyOrderRefund where f.auditstatus == 1 && f.ismorepay == 1 select new WX_SzzyOrderRefund_View() { id = f.id, orderid = f.orderid, refundprice = f.refundprice, account = f.account, username = f.username, refundtype = f.refundtype, refundtypename = f.refundtypename, refunddate = f.refunddate, remark = f.remark, att = f.att, auditstatus = f.auditstatus, auditor = f.auditor, auditorname = f.auditorname, audittime = f.audittime, ctime = f.ctime, att2 = f.att2, companycode = f.companycode, channel = f.channel, isdelete = f.isdelete, ismorepay = f.ismorepay, refundnum = 0 //增加序号0,表示不需要处理 }).ToList(); var refund = refund1.GroupBy(x => x.orderid) .Select(g => new { g, count = g.Count() }) .SelectMany(t => t.g.Select(b => b) .Zip(Enumerable.Range(1, t.count), (j, k) => new WX_SzzyOrderRefund_View { id = j.id, orderid = j.orderid, refundprice = j.refundprice, account = j.account, username = j.username, refundtype = j.refundtype, refundtypename = j.refundtypename, refunddate = j.refunddate, remark = j.remark, att = j.att, auditstatus = j.auditstatus, auditor = j.auditor, auditorname = j.auditorname, audittime = j.audittime, ctime = j.ctime, att2 = j.att2, companycode = j.companycode, channel = j.channel, isdelete = j.isdelete, ismorepay = j.ismorepay, refundnum = k //增加序号 })).ToList(); refund.AddRange(refund2); foreach (var item in refund) { if (item.refundtype == 11) { item.refundprice = item.refundprice * Convert.ToDecimal(0.68607); } else if (item.refundtype == 12) { item.refundprice = item.refundprice * Convert.ToDecimal(0.68760); //LogHelper.Info("item.refundprice:" + item.refundprice.ToString()); } else if (item.refundtype == 13) { item.refundprice = item.refundprice * Convert.ToDecimal(0.686); } } var queryRefund = (from f in refund join o in queryOrder on f.orderid equals o.orderid //join o in db.WX_SZZYORDER on f.orderid equals o.ORDERID //join r in db.WX_SzzyOrder_Redefine_Time on f.orderid equals r.orderid //join t in db.Order_Teacher on f.orderid equals t.orderid into ftTmp //from ft in ftTmp.DefaultIfEmpty() //where f.auditstatus == 1 select new OrderActDto() { orderid = f.orderid, username = o.username, acttime = f.refunddate.Value, arrivalpay = null, opendays = o.opendays, giftdays = o.giftdays, channel = f.channel.Value, midproductid = o.midproductid, teacher = o.teacher, refundprice = f.refundprice, ordertype = o.ordertype, isrefund = 1, sort = 1, isoneday = o.isoneday, refundtype = f.refundtype, refundnum = f.refundnum, ismorepay = f.ismorepay, otime = o.otime }).ToList(); queryOrder.AddRange(queryRefund); //queryOrder.AddRange(refund); foreach (var item in queryOrder) { item.acttime = DateTime.Parse(item.acttime.ToString("yyyy-MM-dd")); if (item.isoneday == 1) { item.opendays = 1; } if (item.midproductid == 100800101 || item.midproductid == 100800201 || item.midproductid == 100800202) { item.midproductid = 100800101; } } var list = queryOrder.OrderBy(p => p.acttime).ThenBy(p => p.sort).ThenBy(p => p.orderid).ToList(); var i = 1; foreach (var item in list) { item.id = i; i++; } return list; } } public List GetOpenOrderModule(DateTime sTime, DateTime eTime, DateTime? bTime, DateTime? fTime, string channel) { if (!bTime.HasValue) { bTime = DateTime.Parse("2018-12-01"); } if (!fTime.HasValue) { fTime = DateTime.Now; } else { fTime = fTime.Value.AddDays(1); } //var arr2 = new List() { "shzz10220703" }; //var arr2 = new List() { "dn0074281" }; //var arr2 = new List() { "zxj123" }; using (var db = new Model.EntityAudit.AuditContext()) { var query = from m in db.Module_Price //where arr2.Contains(m.username) //where arr2.Contains(m.orderid.Value) where m.otime2 >= bTime && m.otime2 < fTime //where (m.channel >= 2200 && m.channel <= 2399) || (m.channel >= 1000 && m.channel <= 1099) //|| (m.channel >= 2000 && m.channel <= 2199) || (m.channel >= 2400 && m.channel <= 2499) //where (m.channel >= 26800 && m.channel <= 26899) //where (m.channel >= 27100 && m.channel <= 27199) //where ((m.channel >= 26800 && m.channel <= 26899)) //where !(m.channel >= 25000 && m.channel <= 26199) select m; if (!string.IsNullOrEmpty(channel)) { var arr0 = channel.Split('|'); if (arr0.Length > 1) { var predicates = new List>>(); foreach (var item in arr0) { var a = item.Split(','); var min = Convert.ToInt32(a[0]); var max = Convert.ToInt32(a[1]); predicates.Add(m => m.channel >= min && m.channel <= max); } query = query.WhereOR(predicates.ToArray()); } else { var arr = channel.Split(','); var min = Convert.ToInt32(arr[0]); var max = Convert.ToInt32(arr[1]); query = query.Where(m => m.channel >= min && m.channel <= max); } } var order = (from m in query select new OrderModuleDto() { id = m.id, acttime = m.otime2.Value, //acttime = m.starttime2.Value, orderid = m.orderid.Value, username = m.username, moduleprice = m.modulePrice, opendays = m.opendays2, moduleid = m.moduleid, refundprice = null, refundday = null, isrefund = 0, otime = m.otime2.Value, orderPrice = m.orderPrice.Value, sort = 0, channel = m.channel.Value, isoneday = m.isoneday.Value, ismorepay = 0, stime = m.starttime2.Value }).ToList(); var refundQuery = from f in db.Wx_SzzyOrderModuleRefund where f.ismorepay == 0 && f.refunddate >= bTime && f.refunddate < fTime //where arr2.Contains(f.username) //where arr2.Contains(f.orderid.Value) //where (f.channel >= 2200 && f.channel <= 2399) || (f.channel >= 1000 && f.channel <= 1099) // || (f.channel >= 26800 && f.channel <= 26899) //where (f.channel >= 27100 && f.channel <= 27199) //where ((f.channel >= 26800 && f.channel <= 26899)) //where !(f.channel >= 25000 && f.channel <= 26199) select f; if (!string.IsNullOrEmpty(channel)) { var arr0 = channel.Split('|'); if (arr0.Length > 1) { var predicates = new List>>(); foreach (var item in arr0) { var a = item.Split(','); var min = Convert.ToInt32(a[0]); var max = Convert.ToInt32(a[1]); predicates.Add(m => m.channel >= min && m.channel <= max); } refundQuery = refundQuery.WhereOR(predicates.ToArray()); } else { var arr = channel.Split(','); var min = Convert.ToInt32(arr[0]); var max = Convert.ToInt32(arr[1]); refundQuery = refundQuery.Where(m => m.channel >= min && m.channel <= max); } } var refund = refundQuery.ToList(); var refundList = new List(); foreach (var item in refund) { var model = new OrderModuleDto() { id = null, acttime = item.refunddate, orderid = item.orderid.HasValue ? item.orderid.Value : 0, username = item.username, moduleprice = null, opendays = null, //moduleid = item.moduleid, moduleid = null, refundprice = Convert.ToDouble(item.refundprice), //refundday = item.restday, refundday = null, isrefund = 1, //otime = item.otime2, otime = item.refunddate, orderPrice = 0, sort = 1, channel = item.channel, //isoneday = item.isoneday.HasValue ? item.isoneday.Value : 0, isoneday = 0, stime = item.refunddate }; if (item.ismorepay.HasValue) { model.ismorepay = item.ismorepay.Value; } refundList.Add(model); } order.AddRange(refundList); foreach (var item in order) { item.acttime = DateTime.Parse(item.acttime.ToString("yyyy-MM-dd")); //if(item.moduleprice <= 0) //{ // //如果是赠送单,执行时间修改成发生时间 // item.acttime = item.otime; //} if (item.isoneday == 1) { item.opendays = 1; } } var list = order.OrderBy(p => p.acttime).ThenBy(p => p.sort).ThenBy(p => p.orderid).ToList(); return list; } //return null; } public List GetPayList() { using (var db = new Model.EntityAudit.AuditContext()) { var paylist = db.Wx_SzzyOrderPay_Ext.ToList(); foreach (var pay in paylist) { pay.PayPrice = pay.PayPrice - pay.OverPayPrice; } return paylist; } } public Dictionary GetFairPrice() { Dictionary dic = new Dictionary(); using (var db = new Model.EntityAudit.AuditContext()) { var list = db.Mon_FairPrice.ToList(); return list.ToDictionary(d => d.ModuleId, d => d.Price); } } public List GetBigOrderList(ref Laypage pager, OrderQueryDto dto) { var products = _product.GetProductList(); var subproducts = _product.GetSubProductListByProductId(0, 0, null); using (var db = new zxdContext()) { //var queryData = db.WX_SZZYORDER.Where(m => m.CHANNEL == 29800).AsQueryable(); var queryData = db.WX_SZZYORDER.AsQueryable(); #region UMID转RESID if (!string.IsNullOrEmpty(dto.UMID) && string.IsNullOrEmpty(dto.resId)) { var UMIDMain = db.RES_CUSTOMER.AsQueryable().FirstOrDefault(m => m.UMID == dto.UMID); if (UMIDMain != null) { dto.resId = UMIDMain.RESID; } else { dto.resId = "UNLL_RESID"; } } #endregion UMID转RESID #region 过滤条件 if (dto.orderId.HasValue) { queryData = queryData.Where(m => m.ORDERID == dto.orderId.Value); } if (dto.orderType.HasValue) { queryData = queryData.Where(m => m.ORDERTYPE == dto.orderType); } if (dto.stime.HasValue) { queryData = queryData.Where(m => m.ARRIVALTIME >= dto.stime.Value); } if (dto.etime.HasValue) { dto.etime = dto.etime.Value.AddDays(1); queryData = queryData.Where(m => m.ARRIVALTIME < dto.etime); } if (!string.IsNullOrWhiteSpace(dto.orderStatus)) { if (dto.orderStatus == "1") { string[] arr = { "180", "200", "220", "205", "90", "80" }; queryData = queryData.Where(m => arr.Contains(m.ORDERSTATUS)); } else { var arr = dto.orderStatus.Split(','); if (arr.Length > 1) { queryData = queryData.Where(m => arr.Contains(m.ORDERSTATUS)); } else { queryData = queryData.Where(m => m.ORDERSTATUS == dto.orderStatus); } } } if (!string.IsNullOrEmpty(dto.mobile)) { dto.resId = ResUtil.CreateResId(dto.mobile); } if (!string.IsNullOrWhiteSpace(dto.resId)) { queryData = queryData.Where(m => m.RESID == dto.resId); } if (!string.IsNullOrWhiteSpace(dto.companyCode)) { queryData = queryData.Where(m => m.companycode == dto.companyCode); } if (dto.szzyOrderId.HasValue) { queryData = queryData.Where(m => m.SZZYORDERID == dto.szzyOrderId); } if (dto.productId.HasValue && dto.productId > 0) { queryData = queryData.Where(m => m.PRODUCTID == dto.productId); } //if (midProductId.HasValue && productId.HasValue && !subProductId.HasValue) //{ // var arr = db.WX_SZZYSUBPRODUCT.Where(p => p.MidProductId == midProductId).Select(p => p.SUBPRODUCTID).ToList(); // //LogHelper.Info(arr.ToJson()); // queryData = queryData.Where(m => arr.Contains(m.SUBPRODUCTID)); //} if (dto.productId1.HasValue && dto.productId.HasValue && !dto.productId2.HasValue && !dto.subProductId.HasValue) { var arr1 = products.Where(p => p.parentid == dto.productId1.Value).Select(p => p.PRODUCTID).ToList(); var arr = subproducts.Where(p => arr1.Contains(p.MidProductId.Value)).Select(p => p.SUBPRODUCTID).ToList(); queryData = queryData.Where(m => arr.Contains(m.SUBPRODUCTID)); } if (dto.productId2.HasValue && dto.productId.HasValue && dto.productId1.HasValue && !dto.subProductId.HasValue) { var arr = subproducts.Where(p => p.MidProductId == dto.productId2.Value).Select(p => p.SUBPRODUCTID).ToList(); queryData = queryData.Where(m => arr.Contains(m.SUBPRODUCTID)); } if (dto.subProductId.HasValue) { queryData = queryData.Where(m => m.SUBPRODUCTID == dto.subProductId); } if (!string.IsNullOrEmpty(dto.outOrderNo)) { queryData = queryData.Where(m => m.outorderno == dto.outOrderNo); } if (!string.IsNullOrEmpty(dto.channel)) { var arr0 = dto.channel.Split('|'); if (arr0.Length > 1) { var predicates = new List>>(); foreach (var item in arr0) { var a = item.Split(','); var min = Convert.ToInt32(a[0]); var max = Convert.ToInt32(a[1]); predicates.Add(m => m.CHANNEL >= min && m.CHANNEL <= max); } queryData = queryData.WhereOR(predicates.ToArray()); } else { var arr = dto.channel.Split(','); var min = Convert.ToInt32(arr[0]); var max = Convert.ToInt32(arr[1]); queryData = queryData.Where(m => m.CHANNEL >= min && m.CHANNEL <= max); } } if (dto.riskctrlStatus.HasValue) { if (dto.riskctrlStatus.Value == -2) { queryData = queryData.Where(m => m.contractstatus == 0); } else { if (dto.riskctrlStatus.Value == 2) queryData = queryData.Where(m => m.RISKCTRLSTATUS == dto.riskctrlStatus.Value && m.contractstatus == 1); else if (dto.riskctrlStatus.Value == -1) queryData = queryData.Where(m => m.RISKCTRLSTATUS == dto.riskctrlStatus.Value && m.contractstatus == 1); else queryData = queryData.Where(m => m.RISKCTRLSTATUS != 2 && m.RISKCTRLSTATUS != -1 && m.contractstatus == 1); } } if (dto.needpay.HasValue) { queryData = queryData.Where(p => p.NEEDPAY > dto.needpay); } if (!string.IsNullOrEmpty(dto.cname)) { queryData = queryData.Where(p => p.CNAME == dto.cname); } if (!string.IsNullOrEmpty(dto.wXShopOrderNo)) { queryData = queryData.Where(p => p.wXShopOrderNo == dto.wXShopOrderNo); } #endregion 过滤条件 queryData = queryData.OrderByDescending(m => m.CTIME); var orderSum = new WX_SZZYORDER_View() { //RESID = "合计", ORDERID = 0, NEEDPAY = queryData.Sum(p => p.NEEDPAY), FINALPAY = queryData.Sum(p => p.FINALPAY), ARRIVALPAY = queryData.Sum(p => p.ARRIVALPAY), ORDERTYPE = 0, ORDERSTATUS = string.Empty }; PagerUtil.SetPager(ref queryData, ref pager); var list = (from q in queryData join c in db.WX_ComplianceConfirm on q.SZZYORDERID equals c.SzzyOrderId into tmpQC from qc in tmpQC.DefaultIfEmpty() select new WX_SZZYORDER_View() { ORDERID = q.ORDERID, PRODUCTNAME = q.PRODUCTNAME, SUBPRODUCTNAME = q.SUBPRODUCTNAME, ORDERTYPE = q.ORDERTYPE, UPGRADEORDERIDS = q.UPGRADEORDERIDS, NEEDPAY = q.NEEDPAY, SZZYORDERID = q.SZZYORDERID, ORDERSTATUS = q.ORDERSTATUS, CTIME = q.CTIME, CONTRACTCODE = q.CONTRACTCODE, OTIME = q.OTIME, ENDTIME = q.ENDTIME, RESID = q.RESID, FINALPAY = q.FINALPAY, ORDERSTATUSNAME = q.ORDERSTATUSNAME, UPDATEORDERTIME = q.UPDATEORDERTIME, ISOPEN = q.ISOPEN, ARRIVALPAY = q.ARRIVALPAY, ARRIVALTIME = q.ARRIVALTIME, CNAME = q.CNAME, OPENDAYS = q.OPENDAYS, SOFTUSERNAME = q.SOFTUSERNAME, CHANNEL = q.CHANNEL, RISKCTRLSTATUS = q.RISKCTRLSTATUS, companycode = q.companycode, contractstatus = q.contractstatus, hashgrecord = q.hashgrecord, outorderno = q.outorderno, giftdays = q.giftdays, giftdays2 = q.giftdays2, external_userid = q.external_userid, wework_remoteid = q.wework_remoteid, CUSTOMERUSERNAME = q.CUSTOMERUSERNAME, INNERUSERID = q.INNERUSERID, SUBPRODUCTID = q.SUBPRODUCTID, SOURCE = q.SOURCE, rejectremark = q.rejectremark, CpConfirmOrderId = qc.SzzyOrderId, fujian = q.fujian, ret = q.RET }).ToList(); //var list = queryData.ToList(); var data = new List(); var resids = list.Select(m => m.RESID).ToList(); var myuc = db.RES_CUSTOMER.AsQueryable().Where(m => resids.Contains(m.RESID)).ToList(); foreach (var item in list) { var sp = subproducts.FirstOrDefault(p => p.SUBPRODUCTID == item.SUBPRODUCTID); if (sp != null) { var pp = products.FirstOrDefault(p => p.PRODUCTID == sp.MidProductId); if (pp != null) { item.MidProductName = pp.PRODUCTNAME; } } item.UMID = myuc.FirstOrDefault(m => m.RESID == item.RESID)?.UMID; data.Add(item); } var curOrderSum = new WX_SZZYORDER_View() { //RESID = "合计", ORDERID = 1, NEEDPAY = list.Sum(p => p.NEEDPAY), FINALPAY = list.Sum(p => p.FINALPAY), ARRIVALPAY = list.Sum(p => p.ARRIVALPAY), ORDERTYPE = 0, ORDERSTATUS = string.Empty }; data.Add(curOrderSum); data.Add(orderSum); return data; } } /// /// 查询需要自动开通的订单ID数据 /// /// /// /// public decimal[] GetNeedOpenOrderIds(ref Laypage pager, DateTime oneMonth) { using (var db = new zxdContext()) { var param = db.BAS_PARAMETER.FirstOrDefault(m => m.PARAKEY == "Sys_nocontactcode_canopenorder");//没有签合同能否开通订单:1和null:可以开通 0:不能开通 DateTime now = DateTime.Now; string[] orderstatus = { "200", "201" }; if (param != null && param.PARAVALUE == "0")//没有签合同能否开通订单:1和null:可以开通 0:不能开通 { var orderList = from a in db.WX_SZZYORDER join b in db.WX_SZZYSUBPRODUCT on a.PRODUCTCODE equals b.PRODUCTCODE where orderstatus.Contains(a.ORDERSTATUS)//状态达标 where a.NEEDPAY == a.ARRIVALPAY//金额达标 where a.CTIME > oneMonth//创建时间在一定的范围内,默认只跑一个月内的数据 where (a.estimateotime == null || a.estimateotime < now)//预计开通时间达标 where b.automaticOpen == 1//需要设置了自动开通 where (a.RISKCTRLSTATUS == 2 || (b.needFK == 0 && a.CONTRACTCODE != null))//风控通过了,或者产品设置了不需要风控 where a.CNAME != null where a.idcard != null select a; orderList = orderList.OrderBy(m => m.ORDERID);//根据ID顺序来执行 PagerUtil.SetPager(ref orderList, ref pager); return orderList.Select(m => m.ORDERID).ToArray(); } else { var orderList = from a in db.WX_SZZYORDER join b in db.WX_SZZYSUBPRODUCT on a.PRODUCTCODE equals b.PRODUCTCODE where orderstatus.Contains(a.ORDERSTATUS)//状态达标 where a.NEEDPAY == a.ARRIVALPAY//金额达标 where a.CTIME > oneMonth//创建时间在一定的范围内,默认只跑一个月内的数据 where (a.estimateotime == null || a.estimateotime < now)//预计开通时间达标 where b.automaticOpen == 1//需要设置了自动开通 where (a.RISKCTRLSTATUS == 2 || b.needFK == 0)//风控通过了,或者产品设置了不需要风控 where a.CNAME != null where a.idcard != null select a; orderList = orderList.OrderBy(m => m.ORDERID);//根据ID顺序来执行 PagerUtil.SetPager(ref orderList, ref pager); return orderList.Select(m => m.ORDERID).ToArray(); } } } public Wx_SzzyOrderStOrderInfo GetStOrderInfo(decimal orderid) { using (var db = new zxdContext()) { var existModel = db.Wx_SzzyOrderStOrderInfo.FirstOrDefault(n => n.orderid == orderid); return existModel; } } /// /// 插入状态变更日志 /// /// public void InserWxOrderLog(decimal orderid) { using (var db = new zxdContext()) { try { var order = db.WX_SZZYORDER.FirstOrDefault(n => n.ORDERID == orderid); if (order != null) { OrderChangeDto changeDto = new OrderChangeDto { OrderId = order.ORDERID, RESID = order.RESID, FINALPAY = order.FINALPAY, ORIGINPAY = order.ORIGINPAY, NEEDPAY = order.NEEDPAY, ARRIVALPAY = order.ARRIVALPAY, SZZYORDERID = (long)order.SZZYORDERID, ORDERSTATUS = order.ORDERSTATUS, ORDERSTATUSNAME = order.ORDERSTATUSNAME, Deptid = order.deptid, DeptName = order.deptName, GroupId = order.groupid }; var apiPath = cache_BL.GetValue_Parameter(CRM.Core.Model.Enum.Parameter.Zxd_CoreApiUrl) + "Api/Order/addOrderLog"; var apiResult = Utility.PostAjaxData(apiPath, changeDto.ToJson(), Encoding.UTF8, 5000); } } catch (Exception ex) { LogHelper.Error($"插入订单日志信息失败{ex.Message}"); } } } /// /// 重置客户到期时间 /// /// public void ResetCustomerPassTime(string resid) { Task.Run(() => { try { var changeDto = new { resid = resid }; var apiPath = cache_BL.GetValue_Parameter(CRM.Core.Model.Enum.Parameter.Zxd_CoreApiUrl) + "Api/Customer/initCustomerPasstime"; var apiResult = Utility.PostAjaxData(apiPath, changeDto.ToJson(), Encoding.UTF8, 5000); } catch (Exception ex) { LogHelper.Error($"插入订单日志信息失败{ex.Message}"); } }); } public List GetNewCheckList(ref Laypage pager, QueryCheckDto dto) { List res = new List(); var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); //webapi = "https://localhost:7090"; var url = $"{webapi}/Order/GetNewCheckLog"; var para = $"{dto.GetParamToString()}"; var result = Utility.GetData(url, para, Encoding.UTF8); var data = JsonConvert.DeserializeObject>>(result); if (data.code == 0) { return data.data; } return res; } public InitEditModel GetinitEditModel(QueryCheckDto dto) { var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); //webapi = "https://localhost:7090"; var url = $"{webapi}/Order/InitEditModel"; var para = $"{dto.GetParamToString()}"; var result = Utility.GetData(url, para, Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); if (data.code == 0) { return data.data; } return new InitEditModel(); } public CheckEditModel GetNewCheckModel(QueryCheckDto dto) { var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); //webapi = "https://localhost:7090"; var url = $"{webapi}/Order/GetCheckEditLog"; var para = $"{dto.GetParamToString()}"; var result = Utility.GetData(url, para, Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); if (data.code == 0) { return data.data; } else { throw new Exception(data.message); } return new CheckEditModel(); } public bool CheckSave(string postdata, int eid, string ename) { var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); //webapi = "https://localhost:7090"; var postObj = JsonConvert.DeserializeObject(postdata); postObj.Eid = eid; postObj.Ename = ename; var url = $"{webapi}/Order/CheckSave"; var result = Utility.PostAjaxData(url, JsonConvert.SerializeObject(postObj), Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); if (data.code == 0) { return data.data; } else { throw new Exception(data.message); } } public List GetCheckList(ref Laypage pager, CheckOrderQueryDto dto) { var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); //webapi = "https://localhost:7090"; var url = $"{webapi}/Order/GetCheckList"; var para = $"{dto.GetParamToString()}&PageIndex={pager.page}&PageSize={pager.limit}"; var result = Utility.GetData(url, para, Encoding.UTF8); var data = JsonConvert.DeserializeObject>>(result); if (data.code == 0) { pager.count = data.data.Total; return data.data.Data; } return new List(); } public bool HasBlackList(string idcard) { //var sql = $"select count(distinct o.idcard) idcard from CSVR_BLACKNUMBER c join wx_szzyorder o on c.resid = o.resid where o.orderstatus in(220,205,80,90) and o.idcard is not null and o.idcard = @idcard;"; var sql = $"select count(1) from CSVR_BLACKNUMBER c where c.resid in(select distinct o.resid from wx_szzyorder o where o.orderstatus in(220,205,80,90) and o.idcard is not null and o.idcard = @idcard);"; var para = new List() { new MySqlParameter("idcard", idcard) }; var data = MySqlDbHelper.ExecuteScalar(ConStringHelper.ZxdCRMConn, CommandType.Text, sql, para.ToArray()); int.TryParse(data.ToString(), out int count); return count > 0; } public void ImportCheckOrder(DataTable dt) { foreach (DataRow dr in dt.Rows) { var orderId = dr[4].ToString(); var ctype = dr[6].ToString(); var ctypetext = dr[8].ToString(); var condition = dr[7].ToString(); var conditiontxt = dr[8].ToString() + "(" + dr[9].ToString() + ")"; var remark = dr[11].ToString(); var suggest = dr[12].ToString(); var ename = dr[14].ToString(); var eid = dr[15].ToString(); var sql1 = "insert into hg_checkqualitylog select 0,t.resid,2,t.otime," + eid + ",'" + ename + "',null,t.otime,t.otime from wx_szzyorder t where t.orderid=" + orderId + ";SELECT LAST_INSERT_ID();"; var data1 = MySqlDbHelper.ExecuteScalar(ConStringHelper.ZxdCRMConn, CommandType.Text, sql1, (new List() { }).ToArray()); int.TryParse(data1.ToString(), out int id); var sql2 = "insert into hg_checkqualitylog_detail select 0," + id + ",1," + condition + ",'" + conditiontxt + "','" + remark + "', '" + suggest + "',t.otime,null from wx_szzyorder t where t.orderid=" + orderId + ";"; var data2 = MySqlDbHelper.ExecuteNonQuery(ConStringHelper.ZxdCRMConn, CommandType.Text, sql2, (new List() { }).ToArray()); var sql3 = "insert into hg_checkqualitylog_relation select 0,t.orderid,t.resid," + id + ",t.otime,null from wx_szzyorder t where t.orderid=" + orderId + ";"; var data3 = MySqlDbHelper.ExecuteNonQuery(ConStringHelper.ZxdCRMConn, CommandType.Text, sql3, (new List() { }).ToArray()); var sql4 = "insert into wx_szzyorder_extend select t.orderid,t.resid,2,t.otime," + eid + ",'" + ename + "',t.otime,t.otime," + ctype + ",'" + ctypetext + "' from wx_szzyorder t where t.orderid=" + orderId + ";"; var data4 = MySqlDbHelper.ExecuteNonQuery(ConStringHelper.ZxdCRMConn, CommandType.Text, sql4, (new List() { }).ToArray()); //LogHelper.Info($"sql1=>{sql1}"); //LogHelper.Info($"sql2=>{sql2}"); //LogHelper.Info($"sql3=>{sql3}"); //LogHelper.Info($"sql4=>{sql4}"); } } public void ImportCheckOrderOK(DataTable dt) { foreach (DataRow dr in dt.Rows) { var orderId = dr[0].ToString(); var ename = dr[1].ToString(); var eid = dr[2].ToString(); var sql1 = "insert into hg_checkqualitylog select 0,t.resid,1,t.otime," + eid + ",'" + ename + "',null,t.otime,t.otime from wx_szzyorder t where t.orderid=" + orderId + ";SELECT LAST_INSERT_ID();"; var data1 = MySqlDbHelper.ExecuteScalar(ConStringHelper.ZxdCRMConn, CommandType.Text, sql1, (new List() { }).ToArray()); int.TryParse(data1.ToString(), out int id); var sql3 = "insert into hg_checkqualitylog_relation select 0,t.orderid,t.resid," + id + ",t.otime,null from wx_szzyorder t where t.orderid=" + orderId + ";"; var data3 = MySqlDbHelper.ExecuteNonQuery(ConStringHelper.ZxdCRMConn, CommandType.Text, sql3, (new List() { }).ToArray()); var sql4 = "insert into wx_szzyorder_extend select t.orderid,t.resid,1,t.otime," + eid + ",'" + ename + "',t.otime,t.otime,null,null from wx_szzyorder t where t.orderid=" + orderId + ";"; var data4 = MySqlDbHelper.ExecuteNonQuery(ConStringHelper.ZxdCRMConn, CommandType.Text, sql4, (new List() { }).ToArray()); } } public bool AddCheckNotice(HgCheckQualityNoticeDto dto) { var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); var url = $"{webapi}/Order/AddCheckNotice"; var result = Utility.PostAjaxData(url, JsonConvert.SerializeObject(dto), Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); if (data.code == 0) { return data.data; } else { throw new Exception(data.message); } } public bool EditCheckNotice(EditHgCheckQualityNoticeDto dto) { var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); var url = $"{webapi}/Order/EditCheckNotice"; var result = Utility.PostAjaxData(url, JsonConvert.SerializeObject(dto), Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); if (data.code == 0) { return data.data; } else { throw new Exception(data.message); } } public bool AddNoticeOption(int id, string opinion, int eid) { var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); var url = $"{webapi}/Order/AddQualityNoticeOption"; QualityNoticeOption dto = new QualityNoticeOption() { eid = eid, id = id, NoticeLevel = "hg", opinion = opinion }; var result = Utility.PostAjaxData(url, JsonConvert.SerializeObject(dto), Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); if (data.code == 0) { return data.data; } else { throw new Exception(data.message); } } //删除 public bool DelCheckNotice(int id) { var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); var url = $"{webapi}/Order/DelCheckNotice"; var result = Utility.GetData(url, "id=" + id, Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); if (data.code == 0) { return data.data; } else { throw new Exception(data.message); } } public bool AddQualityPunish(int id, string content, int eid) { var webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi); var url = $"{webapi}/Order/AddQualityPunish"; QualityPunish dto = new QualityPunish() { eid = eid, id = id, content = content }; var result = Utility.PostAjaxData(url, JsonConvert.SerializeObject(dto), Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); if (data.code == 0) { return data.data; } else { throw new Exception(data.message); } } } public class Hg_CheckQuality_Notice { public int id { get; set; } public string NoticeNo { get; set; } public DateTime NoticeDate { get; set; } public string FromDept { get; set; } public string FromDeptName { get; set; } public string ToDept { get; set; } public string ToDeptName { get; set; } public string Content { get; set; } public int NoticeCreator { get; set; } public string NoticeCreatorName { get; set; } public DateTime NoticeCtime { get; set; } public string PunishNo { get; set; } public string PunishContent { get; set; } public int? PunishCreator { get; set; } public string PunishCreatorName { get; set; } public DateTime? PunishCtime { get; set; } public List Hg_CheckQuality_NoticeSigns { get; set; } } public class Hg_CheckQuality_NoticeSign_Dto { public int id { get; set; } public int NoticeId { get; set; } public string NoticeNo { get; set; } public string NoticeLevel { get; set; } public int eid { get; set; } public string Name { get; set; } public int Sign { get; set; } public DateTime SignTime { get; set; } public string Opinion { get; set; } } public class HgCheckQualitySearchDto : SearchPageBase { public string noticeNo { get; set; } public DateTime? stime { get; set; } public DateTime? etime { get; set; } public string toDept { get; set; } } public class OrderInfoView { public decimal ORDERID { get; set; } public decimal? SZZYORDERID { get; set; } public string RESID { get; set; } public string CNAME { get; set; } public string SOFTUSERNAME { get; set; } public string SUBPRODUCTNAME { get; set; } public DateTime? OTIME { get; set; } public decimal ARRIVALPAY { get; set; } public DateTime ARRIVALTIME { get; set; } public int CHANNEL { get; set; } public string PAYNO { get; set; } } internal class OrderInfoViewComparer : IEqualityComparer { public bool Equals(OrderInfoView x, OrderInfoView y) { if (x.ORDERID == y.ORDERID && x.OTIME == y.OTIME && x.ARRIVALPAY == y.ARRIVALPAY && x.ARRIVALTIME == y.ARRIVALTIME && x.PAYNO == y.PAYNO) return true; return false; } public int GetHashCode(OrderInfoView obj) { return obj.ORDERID.GetHashCode(); } } public class OrderModel { public WX_SZZYORDER WX_SZZYORDER { get; set; } public decimal? arrivalpay { get; set; } } public class OpenOrder { public int orderid { get; set; } public DateTime otime { get; set; } public DateTime opday { get; set; } public string orderday { get; set; } public int ordermonth { get; set; } public int orderyear { get; set; } public int channel { get; set; } public decimal arrivalpay { get; set; } public int opendays { get; set; } public DateTime endday { get; set; } public int productid { get; set; } public int settletype { get; set; } public DateTime atime { get; set; } public int amonth { get; set; } public string upgradeorderids { get; set; } } public class OrderActDto { public int id { get; set; } public DateTime acttime { get; set; } public int orderid { get; set; } public string username { get; set; } //public DateTime? otime { get; set; } public int channel { get; set; } public decimal? arrivalpay { get; set; } public int? opendays { get; set; } public int? giftdays { get; set; } //public int productid { get; set; } public int midproductid { get; set; } public string teacher { get; set; } //public int subproductid { get; set; } //public string subproductname { get; set; } //public int settletype { get; set; } //public string upgradeorderids { get; set; } //public DateTime? refundtime { get; set; } public decimal? refundprice { get; set; } public string ordertype { get; set; } public int isrefund { get; set; } public int sort { get; set; } public int isoneday { get; set; } public int? refundtype { get; set; } public int? refundnum { get; set; } public int ismorepay { get; set; } public DateTime otime { get; set; } } public class OrderModuleDto { public int? id { get; set; } public DateTime acttime { get; set; } public int orderid { get; set; } public string username { get; set; } public double? moduleprice { get; set; } public int? opendays { get; set; } public string moduleid { get; set; } public double? refundprice { get; set; } public int? refundday { get; set; } //public string ordertype { get; set; } public int isrefund { get; set; } //public int isoneday { get; set; } public DateTime otime { get; set; } public decimal orderPrice { get; set; } public int sort { get; set; } public int isoneday { get; set; } public int ismorepay { get; set; } public int channel { get; set; } public DateTime stime { get; set; } } public class WX_SzzyOrderRefund_View { public long id { get; set; } public int orderid { get; set; } public decimal refundprice { get; set; } public string account { get; set; } public string username { get; set; } public int refundtype { get; set; } public string refundtypename { get; set; } public DateTime? refunddate { get; set; } public string remark { get; set; } public string att { get; set; } public int auditstatus { get; set; } public int? auditor { get; set; } public string auditorname { get; set; } public DateTime? audittime { get; set; } public DateTime ctime { get; set; } public string att2 { get; set; } public string companycode { get; set; } public int? channel { get; set; } public int isdelete { get; set; } public int ismorepay { get; set; } public int refundnum { get; set; } } public class DzOrder { public int orderid { get; set; } public DateTime paytime { get; set; } public int paymonth { get; set; } public decimal payprice { get; set; } public int productid { get; set; } public int settletype { get; set; } public string payno { get; set; } public DateTime? otime { get; set; } public int? omonth { get; set; } public string orderstatus { get; set; } public DateTime? ftime { get; set; } public int? fmonth { get; set; } public int paytype { get; set; } } public class DzOrder2 { public decimal? orderid { get; set; } public DateTime paytime { get; set; } public int paymonth { get; set; } public decimal payprice { get; set; } public int productid { get; set; } public string payno { get; set; } public DateTime? otime { get; set; } public int? omonth { get; set; } public string orderstatus { get; set; } public DateTime? ftime { get; set; } public int? fmonth { get; set; } public int? isuse { get; set; } public DateTime? atime { get; set; } public int? amonth { get; set; } public DateTime? ntime { get; set; } public int? nmonth { get; set; } public int paytype { get; set; } public int channel { get; set; } } public class WX_SZZYORDER_View { public decimal ORDERID { get; set; } public string PRODUCTNAME { get; set; } public int SUBPRODUCTID { get; set; } public string SUBPRODUCTNAME { get; set; } public decimal? ORDERTYPE { get; set; } public string UPGRADEORDERIDS { get; set; } public decimal? NEEDPAY { get; set; } public decimal? SZZYORDERID { get; set; } /// /// 订单状态:新订单180、已支付200、已开通220、已停用/已退款90、已过期80、已取消70,去掉"已支付200、暂缓开通210"状态 /// public string ORDERSTATUS { get; set; } public DateTime? CTIME { get; set; } public string CONTRACTCODE { get; set; } public DateTime? contractctime { get; set; } public decimal? INNERUSERID { get; set; } public DateTime? OTIME { get; set; } public DateTime? ENDTIME { get; set; } public string RESID { get; set; } public string UMID { get; set; } public decimal? FINALPAY { get; set; } public decimal? ORIGINPAY { get; set; } public decimal? BALANCEPAY { get; set; } public string ORDERSTATUSNAME { get; set; } public DateTime? UPDATEORDERTIME { get; set; } public decimal? ISOPEN { get; set; } public string CUSTOMERUSERNAME { get; set; } public decimal? ARRIVALPAY { get; set; } public DateTime? ARRIVALTIME { get; set; } public string SOURCE { get; set; } public string CNAME { get; set; } public decimal? OPENDAYS { get; set; } public string SOFTUSERNAME { get; set; } public int? CHANNEL { get; set; } public string CHANNELNAME { get; set; } public int RISKCTRLSTATUS { get; set; } public string companycode { get; set; } /// /// 合同状态 /// public int? contractstatus { get; set; } public int? hashgrecord { get; set; } public string outorderno { get; set; } public int? giftdays { get; set; } public string rejectremark { get; set; } public int? giftdays2 { get; set; } public string external_userid { get; set; } public string wework_remoteid { get; set; } public string MidProductName { get; set; } public long? CpConfirmOrderId { get; set; } /// /// 附件 /// public string fujian { get; set; } public decimal? ret { get; set; } public DateTime? estimateotime { get; set; } public string productcode { get; set; } /// /// 希望回访时间 /// public string ai_hgrecord_time { get; set; } public string ai_hgrecord_stime { get; set; } public string ai_hgrecord_etime { get; set; } public int? ai_hgrecord_status { get; set; } = -1; /// /// 外呼状态 /// public string ai_hgrecord_statusname { get; set; } /// /// 是否有录音 /// public int? hasaiaudio { get; set; } /// /// 是否有设置重拨按钮 /// public int hasBtn { get; set; } = 0; public int? eid { get; set; } public string innerUserName { get; set; } public string auditor { get; set; } public DateTime? auditTime { get; set; } public int? contract_status { get; set; } public bool? MarkStatus { get; set; } public HGCheckStatus? checkStatus { get; set; } = 0; public string checkStatusName { get; set; } public bool? Canopenorder { get; set; } public int? CheckRank { get; set; } public string CheckRankTxt { get; set; } } public class WX_SZZYORDER_AIStatusView { public decimal ORDERID { get; set; } public string ai_hgrecord_stime { get; set; } public int startTime { get; set; } = -1; public int endTime { get; set; } = -1; public string ai_hgrecord_etime { get; set; } public int? ai_hgrecord_status { get; set; } = -1; /// /// 外呼状态 /// public string ai_hgrecord_statusname { get; set; } public int hasbtn { get; set; } } public class OrderQueryDto { public decimal? orderId { get; set; } public decimal? orderType { get; set; } public DateTime? stime { get; set; } public DateTime? etime { get; set; } public string orderStatus { get; set; } public string resId { get; set; } public string UMID { get; set; } public string companyCode { get; set; } public decimal? szzyOrderId { get; set; } public int? productId { get; set; } public int? subProductId { get; set; } public string subProduct { get; set; } public string outOrderNo { get; set; } public string channel { get; set; } public int? productId1 { get; set; } public int? productId2 { get; set; } public int? riskctrlStatus { get; set; } public string needpayType { get; set; } public decimal? needpay { get; set; } public string mobile { get; set; } public string cname { get; set; } public string softusername { get; set; } public string wXShopOrderNo { get; set; } public DateTime? xstime { get; set; } public DateTime? xetime { get; set; } public DateTime? kstime { get; set; } public DateTime? ketime { get; set; } public int? hastime { get; set; } public string productcode { get; set; } public int aiCallStatus { get; set; } = -3; public string aiCallStatusList { get; set; } public DateTime? aistime { get; set; } public DateTime? aietime { get; set; } public bool? MarkStatus { get; set; } public string reason { get; set; } public int? checkStatus { get; set; } public int? checkrank { get; set; } } public class WX_SZZYORDER_ExportView { [DisplayName("订单号")] public decimal ORDERID { get; set; } [DisplayName("客户编号")] public string RESID { get; set; } [DisplayName("客户姓名")] public string CNAME { get; set; } [DisplayName("活动")] public string SUBPRODUCTNAME { get; set; } [DisplayName("状态")] public string ORDERSTATUSNAME { get; set; } [DisplayName("审核时间")] public DateTime? OTIME { get; set; } [DisplayName("订单原价")] public decimal? ORIGINPAY { get; set; } [DisplayName("到账金额")] public decimal? ARRIVALPAY { get; set; } [DisplayName("到账时间")] public DateTime? ARRIVALTIME { get; set; } [DisplayName("下单金额")] public decimal? NEEDPAY { get; set; } [DisplayName("时长")] public decimal? OPENDAYS { get; set; } [DisplayName("下单时间")] public DateTime? CTIME { get; set; } [DisplayName("升级订单")] public string UPGRADEORDERIDS { get; set; } [DisplayName("小类")] public string MidProductName { get; set; } [DisplayName("事业部")] public string CHANNELNAME { get; set; } [DisplayName("赠送")] public int? giftdays { get; set; } [DisplayName("合同编号")] public string CONTRACTCODE { get; set; } [DisplayName("回访状态")] public string ai_hgrecord_statusname { get; set; } } public class InneruserDto { public int EId { get; set; } public string Name { get; set; } } /// /// 订单状态变化 /// public class OrderChangeDto { public decimal OrderId { get; set; } public string RESID { get; set; } public decimal? FINALPAY { get; set; } /// /// 订单原价 /// public decimal? ORIGINPAY { get; set; } public decimal? NEEDPAY { get; set; } public decimal? ARRIVALPAY { get; set; } public long? SZZYORDERID { get; set; } /// /// 订单状态:新订单180、已支付200、已开通220、已停用/已退款90、已过期80、已取消70,去掉"已支付200、暂缓开通210"状态 /// public string ORDERSTATUS { get; set; } public string ORDERSTATUSNAME { get; set; } /// /// 事业部id /// public int? Deptid { get; set; } /// /// 事业部id /// public string DeptName { get; set; } /// /// 群id /// public int? GroupId { get; set; } } public class ScreenRecordDto { public int? Id { get; set; } public int? MasterEid { get; set; } public string MasterEidStr { get; set; } public string MasterResId { get; set; } public string MasterName { get; set; } public string MasterUserName { get; set; } public int? SlaveEid { get; set; } public string SlaveEidStr { get; set; } public string SlaveResId { get; set; } public string SlaveName { get; set; } public string SlaveUserName { get; set; } public DateTime? InitConnectTime { get; set; } public DateTime? RealStartTime { get; set; } public DateTime? RealEndTime { get; set; } public string RealLongTime { get; set; } public string FileUrl { get; set; } } public class FTPConfig { public string Ip { get; set; } public string UserName { get; set; } public string Password { get; set; } } #region 合规质检操作 public class QueryCheckDto { public int? id { get; set; } public string resid { get; set; } public int? orderid { get; set; } } public class CheckLogModel { public int Id { get; set; } public HGCheckStatus? CheckStatus { get; set; } public string CheckStatusName { get; set; } public string OrderId { get; set; } public HGCheckType? CheckType { get; set; } public string CheckTypeName { get; set; } public string Source { get; set; } /// /// 合规情况 /// public string Condition { get; set; } public string Conditiontext { get; set; } public string Content { get; set; } public string Suggest { get; set; } public DateTime? CheckTime { get; set; } public int? Eid { get; set; } public string Ename { get; set; } } public class CheckEditModel { public int? Id { get; set; } public List CheckOrders { get; set; } public string HgCheckSetting { get; set; } public OrderInfo OrderInfo { get; set; } } public class CheckOrderModel { public int? value { get; set; } public string name { get; set; } } public class OrderInfo { public List OrderId { get; set; } public List Exuserid { get; set; } public string QiWeiUrl { get; set; } } public class CheckSaveDto { public int? Id { get; set; } public int? checkstatus { get; set; } public List orderids { get; set; } public List children { get; set; } public int Eid { get; set; } public string Ename { get; set; } public string checktime { get; set; } } public class CheckLogDetail { public int? id { get; set; } public int? checktype { get; set; } public List audio { get; set; } = new List(); public List qiMsg { get; set; } = new List(); public List condition { get; set; } public string content { get; set; } public string suggest { get; set; } } public class AuditDetail { public int? recordid { get; set; } } public class QiWeMsg { public string corpid { get; set; } public string corpname { get; set; } public string extuserid { get; set; } public string userid { get; set; } public int? eid { get; set; } public string ename { get; set; } } public class CheckOrderListModel { public int Id { get; set; } public string OrderIds { get; set; } public DateTime? CheckTime { get; set; } public string Ename { get; set; } public int? Row { get; set; } public string Result { get; set; } public List CheckDetails { get; set; } } public class CheckDetail { public int? Id { get; set; } public int? CheckType { get; set; } public string CheckTypeName { get; set; } public string ShowSource { get; set; } public List condition { get; set; } public string conditionText { get; set; } public string content { get; set; } public string suggest { get; set; } public List Source { get; set; } } public class CheckNewOrderListModel { public int Id { get; set; } public string OrderIds { get; set; } public DateTime? CheckTime { get; set; } public string Ename { get; set; } public int? Row { get; set; } public string Result { get; set; } public int? DetailId { get; set; } public int? CheckType { get; set; } public string CheckTypeName { get; set; } public string ShowSource { get; set; } public List condition { get; set; } public string conditionText { get; set; } public string content { get; set; } public string suggest { get; set; } } public class CheckSource { public int Id { get; set; } public string appid { get; set; } public string appname { get; set; } public string appuserid { get; set; } public string externaluserid { get; set; } public int? recordid { get; set; } } public class InitEditModel { public CheckSaveDto CheckSaveDto { get; set; } public List CheckNewOrderListModel { get; set; } public CheckEditModel Setting { get; set; } } public class CheckOrderQueryDto { public string cname { get; set; } public string resId { get; set; } public string UMID { get; set; } public int? orderId { get; set; } public string channel { get; set; } public int? checkStatus { get; set; } public DateTime? cstart { get; set; } public DateTime? cend { get; set; } public DateTime? kstime { get; set; } public DateTime? ketime { get; set; } public string auditname { get; set; } public int? checktype { get; set; } public string condition { get; set; } public DateTime? ckstime { get; set; } public DateTime? cketime { get; set; } public string checkname { get; set; } } public class CheckOrderList { public int Id { get; set; } public string ResId { get; set; } public string UMID { get; set; } public string CNAME { get; set; } public int? CHANNEL { get; set; } public string CHANNELNAME { get; set; } public string CTime { get; set; } public HGCheckStatus? checkStatus { get; set; } = 0; public string checkStatusName { get; set; } public string innerUserName { get; set; } public string AuditTime { get; set; } public string AuditName { get; set; } public string OrderIds { get; set; } public DateTime? CheckTime { get; set; } public string Ename { get; set; } public int? Row { get; set; } public string Result { get; set; } public int? DetailId { get; set; } public int? CheckType { get; set; } public string CheckTypeName { get; set; } public string ShowSource { get; set; } public List condition { get; set; } public string conditionText { get; set; } public string content { get; set; } public string suggest { get; set; } } public class HgCheckQualityNoticeDto { //public string NoticeNo { get; set; } public DateTime NoticeDate { get; set; } //public string FromDept { get; set; } //public string FromDeptName { get; set; } public int ToEid { get; set; } //public string ToDept { get; set; } //public string ToDeptName { get; set; } public string Content { get; set; } public int NoticeCreator { get; set; } public string NoticeCreatorName { get; set; } public List PersonList { get; set; } } public class EditHgCheckQualityNoticeDto { public int Id { get; set; } public string Content { get; set; } } public class PersonInfo { public string NoticeLevel { get; set; } public int Eid { get; set; } } public class HgCheckQualityNoticeSubmitDto { public string Content { get; set; } public int SaleEid { get; set; } public int ManageEid { get; set; } } public class QualityNoticeOption { public int id { get; set; } public int eid { get; set; } public string opinion { get; set; } public string NoticeLevel { get; set; } } public class QualityPunish { public int id { get; set; } public int eid { get; set; } public string content { get; set; } } #endregion 合规质检操作 /// /// 查看风测合同等信息 /// public class ContractResultView { /// /// 风险揭示书 /// public string fxjssUrl { get; set; } /// /// 投顾服务协议.pdf /// public string tgfwxyUrl { get; set; } /// /// 风险评测页面 /// public string fxpcUrl { get; set; } public string businesstype { get; set; } /// /// 产品或服务不适当警示及投资者确认书.pdf /// public string cphfwUrl { get; set; } /// /// 适当性评估结果确认书.pdf /// public string sdxpgUrl { get; set; } /// /// 合同编码 /// public string CONTRACTCODE { get; set; } public int? CONTRACTSTATUS { get; set; } /// /// 合同url /// public string htUrl { get; set; } } }