Browse Source

需求单No.139419

master
wugang 7 years ago
parent
commit
ce4ce8e65c
1 changed files with 43 additions and 27 deletions
  1. +43
    -27
      BWP.B3_YunKen/TimerTask/NullifyCustomerTask.cs

+ 43
- 27
BWP.B3_YunKen/TimerTask/NullifyCustomerTask.cs View File

@ -4,6 +4,7 @@ using System.Threading;
using BWP.B3Frameworks;
using BWP.B3Frameworks.BL;
using BWP.B3Frameworks.BO;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.B3Frameworks.Utils;
using BWP.B3Sale.BL;
using BWP.B3Sale.BO;
@ -36,43 +37,49 @@ namespace BWP.B3_YunKen.TimerTask {
}
//A:查找启用状态的客户
//B:根据客户查找客户的【销售出库单】
//C:确定客户最晚【销售出库单】的日期
//D:若当前日期-最晚【销售出库单】的日期=60 则停用客户
//E:查找客户档案上的销售人员,根据销售人员查找关联的用户
//F:将停用客户的名单推送给销售人员关联的用户
// A:查找启用状态且是否经销商为是的客户
//B:根据客户查找该【经销商】的【客户验收单】
//C:确定客户最晚【客户验收】的日期
//D:若当前日期-最晚【客户验收单】的发货时间>=X且当前日期-【客户档案】的启用时间>=X 则停用客户
//E:查找客户档案上的销售人员,根据销售人员查找关联的用户
//F:将停用客户的名单推送给销售人员关联的用户
//说明:x为【在线设置】中设置自动停用未发货客户的天数
private void DoExecute() {
var mDmoTypeID = DmoTypeIDAttribute.GetID(typeof(Customer));
var dom = new DQueryDom(new JoinAlias(typeof(Customer)));
dom.Columns.Add(DQSelectColumn.Field("ID"));
dom.Columns.Add(DQSelectColumn.Field("LastGoodsOutStoreDate"));
dom.Columns.Add(DQSelectColumn.Field("StopedTime"));
dom.Where.Conditions.Add(DQCondition.EQ("Stopped", false));
dom.Where.Conditions.Add(DQCondition.IsNotNull(DQExpression.Field("LastGoodsOutStoreDate")));
var list = dom.EExecuteList<long, DateTime>();
dom.Where.Conditions.Add(DQCondition.EQ("IsDealers", true));
var list = dom.EExecuteList<long, DateTime?>();
var userMesageBL = BIFactory.Create<IUserMessageBL>();
var cusBL = BIFactory.Create<ICustomerBL>();
foreach (var tuple in list) {
var span = DateTime.Today - tuple.Item2;
if (span.Days >= Days)
{
var cus = cusBL.Load(tuple.Item1);
cus.StopedByCustomerTask = true;
cus.StopReason = Days + "天内未发货";
cusBL.Update(cus);
cusBL.Stop(cus);
if (cus.Employee_ID.HasValue) {
var userID = GetBindingEmployeeID(cus.Employee_ID.Value);
if (userID == null)
continue;
var message = new CommonUserMessage();
message.TargetDmoTypeID = mDmoTypeID;
message.TargetDmoID = tuple.Item1;
message.Text = string.Format("客户{0}NO.{1}因{2}天内未发货,被系统自动停用。", cus.Name, tuple.Item1, Days);
userMesageBL.Insert(BLContext.User.ID, new long[] { userID.Value }, message);
var loadTime = GetMaxLoadTime(tuple.Item1);
if (loadTime != null) {
var diffDays = (DateTime.Now - loadTime.Value).Days;
int? diffDays2 = null;
if (tuple.Item2 != null) {
diffDays2 = (DateTime.Now - tuple.Item2.Value).Days;
}
if (diffDays >= Days && diffDays2 >= Days) {
var cus = cusBL.Load(tuple.Item1);
cus.StopedByCustomerTask = true;
cus.StopReason = Days + "天内未发货";
cusBL.Update(cus);
cusBL.Stop(cus);
if (cus.Employee_ID.HasValue) {
var userID = GetBindingEmployeeID(cus.Employee_ID.Value);
if (userID == null)
continue;
var message = new CommonUserMessage();
message.TargetDmoTypeID = mDmoTypeID;
message.TargetDmoID = tuple.Item1;
message.Text = string.Format("客户{0}NO.{1}因{2}天内未发货,被系统自动停用。", cus.Name, tuple.Item1, Days);
userMesageBL.Insert(BLContext.User.ID, new long[] { userID.Value }, message);
}
}
}
}
@ -80,6 +87,15 @@ namespace BWP.B3_YunKen.TimerTask {
}
private static DateTime? GetMaxLoadTime(long cusID)
{
var query = new DQueryDom(new JoinAlias(typeof(CustomerAccept)));
query.Columns.Add(DQSelectColumn.Max("LoadTime"));
query.Where.Conditions.Add(DQCondition.EQ("CustomerDealer_ID", cusID));
query.Where.Conditions.Add(DQCondition.EQ("BillState", .));
return (DateTime?)query.EExecuteScalar();
}
private static long? GetBindingEmployeeID(long employeeID) {
var query = new DQueryDom(new JoinAlias(typeof(User_Employee)));


Loading…
Cancel
Save