TG.WXCRM.V4/BLL/Wx/WX_AFTERSALES2_BL.cs

260 lines
9.6 KiB
C#

using CRM.Core.DTO;
using System;
using System.Collections.Generic;
using System.Linq;
using WX.CRM.BLL.Base;
using WX.CRM.BLL.Res;
using WX.CRM.BLL.Util;
using WX.CRM.Common;
using WX.CRM.DAL.Wx;
using WX.CRM.IBLL.Wx;
using WX.CRM.Model.Entity;
using WX.CRM.Model.QueryMap;
namespace WX.CRM.BLL.Wx
{
public class WX_AFTERSALES2_BL : DbContextRepository<WX_AFTERSALES2>, IWX_AFTERSALES2
{
WX_SZZYORDER_DAL dal = new WX_SZZYORDER_DAL();
RES_CUSTOMER_BL _customer = new RES_CUSTOMER_BL();
WX_SZZYORDER_BL _order = new WX_SZZYORDER_BL();
WX_AFTERSALES2_LOG_BL _log = new WX_AFTERSALES2_LOG_BL();
public List<AfterSaleServiceView2> GetList(ref Pager pager, AfterSales2QueryDto dto)
{
var gid = dto.groupId ?? 0;
var userId = dto.userId ?? 0;
decimal id = 0;
if (!string.IsNullOrWhiteSpace(dto.szzyOrderId))
{
id = Convert.ToDecimal(dto.szzyOrderId.Trim());
}
//LogHelper.Info("gid:" + gid.ToString());
//LogHelper.Info("userId:" + userId.ToString());
DateTime? ostime1 = null, oetime1 = null, stime1 = null, etime1 = null;
if (!string.IsNullOrWhiteSpace(dto.ostime))
{
ostime1 = Convert.ToDateTime(dto.ostime);
}
if (!string.IsNullOrWhiteSpace(dto.oetime))
{
oetime1 = Convert.ToDateTime(dto.oetime).AddDays(1);
}
if (!string.IsNullOrWhiteSpace(dto.stime))
{
stime1 = Convert.ToDateTime(dto.stime);
}
if (!string.IsNullOrWhiteSpace(dto.etime))
{
etime1 = Convert.ToDateTime(dto.etime).AddDays(1);
}
if (dto.overendtime.HasValue)
dto.overendtime = dto.overendtime.Value.AddDays(1);
var ds = dal.GetMyServiceRes2(ref pager, dto.resId, id, dto.productId, dto.midProductId, dto.subProductId, dto.orderType, stime1, etime1, gid, userId, dto.orderStatus, ostime1, oetime1, dto.cname, dto.overstarttime, dto.overendtime, dto.remark);
var list = ds.Tables[0].ToList<AfterSaleServiceView2>();
var model = list.FirstOrDefault(p => string.IsNullOrEmpty(p.ID));
pager.totalRows = Convert.ToInt32(model.rn);
list.Remove(model);
return list;
}
public retMsg Save(WX_AFTERSALES2 dto)
{
var customer = _customer.getResCustomerByResId(dto.RESID);
if (customer == null)
{
return new retMsg() { result = false, retcode = 400, retmsg = "notexists" };
}
var isExists = Exists(p => p.RESID == dto.RESID);
if (isExists)
{
return new retMsg() { result = false, retcode = 100, retmsg = "exists" };
}
//var order = _order.Get(p => p.RESID == dto.RESID && p.ISFINANCEPAY == 1);
//if (order == null)
//{
// return new retMsg() { result = false, retcode = 400, retmsg = "notorder" };
//}
var ret = Add(dto);
_log.Add(new WX_AFTERSALES2_LOG(dto.RESID, dto.INNERUSERID, dto.EID, dto.UNAME, "add"));
return new retMsg() { result = (ret > 0), retcode = 200, retmsg = "success" };
}
public retMsg Batch(string resids, decimal UserId, decimal Eid, string UserName)
{
resids = resids.Replace("\r\n", "&");
resids = resids.Replace("\r", "&");
resids = resids.Replace("\n", "&");
var list = resids.Trim().Split('&');
var existsList = GetList(p => list.Contains(p.RESID));
if (existsList.Any())
{
return new retMsg() { result = false, retcode = 100, retmsg = string.Join(",", existsList) };
}
var data = new List<WX_AFTERSALES2>();
var log = new List<WX_AFTERSALES2_LOG>();
foreach (var item in list)
{
if (!string.IsNullOrEmpty(item))
{
var model = new WX_AFTERSALES2(item, UserId, Eid, UserName, string.Empty);
data.Add(model);
var logmodel = new WX_AFTERSALES2_LOG(item, UserId, Eid, UserName, "add");
log.Add(logmodel);
}
}
AddList(data);
_log.AddList(log);
return new retMsg() { result = true, retcode = 200, retmsg = "success" };
}
public retMsg Change(string resids, decimal userId, decimal eid, string userName)
{
var arr = resids.Split(',');
foreach (var item in arr)
{
var model = Get(p => p.ID == item);
if (model != null)
{
Delete(model);
Add(new WX_AFTERSALES2(model.RESID, userId, eid, userName, string.Empty));
_log.Add(new WX_AFTERSALES2_LOG(model.RESID, userId, eid, userName, model.INNERUSERID, model.EID, model.UNAME, "update"));
}
}
return new retMsg() { result = true, retcode = 200, retmsg = "success" };
}
public retMsg Edit(string resid, string remark)
{
var model = Get(p => p.RESID == resid);
if (model != null)
{
model.REMARK = remark;
Update(model);
}
return new retMsg() { result = true, retcode = 200, retmsg = "success" };
}
public bool Delete(string id)
{
var model = Get(p => p.ID == id);
if (model != null)
{
Delete(model);
_log.Add(new WX_AFTERSALES2_LOG(model.RESID, model.INNERUSERID, model.EID, model.UNAME, "delete"));
}
return true;
}
public List<AfterSaleAssignView> GetAfterSaleAssignViews(ref Pager pager, string resId, decimal? inneruserId, decimal? bindType, bool? samllorder = null)
{
using (var db = new crmContext())
{
var where = PredicateExtensionses.True<AfterSaleAssignView>();
if (!string.IsNullOrWhiteSpace(resId))
{
where = where.And(p => p.RESID == resId);
}
if (inneruserId.HasValue)
{
where = where.And(p => p.INNERUSERID == inneruserId.Value);
}
if (bindType.HasValue)
{
if (bindType == 1)
{
where = where.And(p => p.INNERUSERID > 0);
}
else
{
where = where.And(p => p.INNERUSERID == null);
}
}
if (samllorder.HasValue)
if (!samllorder.Value)
where = where.And(p => p.FINALPAY > 100);
var query = from p in db.WX_SZZYORDER.Where(p => p.ISOPEN == 1)
join b in (db.WX_SZZYORDER.Where(p => p.ISOPEN == 1).GroupBy(p => p.RESID).Select(g => new { g.Key, finalPay = g.Max(gg => gg.FINALPAY) })) on p.RESID equals b.Key
join a in db.WX_AFTERSALES2 on p.RESID equals a.RESID into t0
from pa in t0.DefaultIfEmpty()
join r in db.WX_COMMISSIONRULE.Where(p => p.ISMAIN == 1) on p.ORDERID equals r.ORDERID into t1
from pr in t1.DefaultIfEmpty()
where p.FINALPAY == b.finalPay
select new AfterSaleAssignView()
{
RESID = p.RESID,
INNERUSERID = pa.INNERUSERID,
ORDERID = p.ORDERID,
SUBPRODUCTNAME = p.SUBPRODUCTNAME,
FINALPAY = p.FINALPAY,
OTIME = p.OTIME,
SALEUSERID = pr.SALEUSERID
};
query = query.Where(where);
if (bindType == 0)
{
query = query.OrderBy(p => p.OTIME);
}
else
{
query = query.OrderByDescending(p => p.ORDERID);
}
PagerUtil.SetPager<AfterSaleAssignView>(ref query, ref pager);
return query.ToList();
}
}
public void SaveAfterSale(List<WX_AFTERSALES2> list)
{
foreach (var wxAftersales in list)
{
var model = Get(p => p.RESID == wxAftersales.RESID);
if (model != null)
{
if (wxAftersales.INNERUSERID == 0)
{
Delete(model);
}
else
{
model.INNERUSERID = wxAftersales.INNERUSERID;
model.CTIME = DateTime.Now;//CTIME会随着更改
Update(model);
}
}
else
{
var info = new WX_AFTERSALES2()
{
PKID = new SEQUENCES_BL().Seq_base_get(),
RESID = wxAftersales.RESID,
INNERUSERID = wxAftersales.INNERUSERID,
CTIME = DateTime.Now
};
Add(info);
}
}
}
}
}