260 lines
9.6 KiB
C#
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);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|