185 lines
6.9 KiB
C#
185 lines
6.9 KiB
C#
using CRM.Core.BLL.Soft;
|
|
using CRM.Core.DTO.Res;
|
|
using MySql.Data.MySqlClient;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using WX.CRM.Common;
|
|
using ZXDService.Dao;
|
|
using ZXDService.Domain;
|
|
using ZXDService.Dto;
|
|
|
|
namespace ZXDService.Services
|
|
{
|
|
public class AssignRulesServices
|
|
{
|
|
SOFT_USER_BL _softUser = new SOFT_USER_BL();
|
|
public bool Insert(List<ResSaleRuleDto> dto)
|
|
{
|
|
var rules = new List<AssignRules>();
|
|
foreach (var item in dto)
|
|
{
|
|
//LogHelper.Info("eid:" + item.EID);
|
|
var rule = new AssignRules()
|
|
{
|
|
eid = item.EID,
|
|
salegroupid = item.SALEGROUPID,
|
|
uname = item.UNAME,
|
|
rate = item.RATE,
|
|
num = item.NUM,
|
|
islimit = item.ISLIMIT,
|
|
limitnum = item.LIMITNUM,
|
|
isvalid = item.ISVALID,
|
|
ch = item.CH,
|
|
levelno = item.LEVELNO,
|
|
crmdeptid = item.DEPTID ?? 0,
|
|
deptrate = item.DEPTRATE,
|
|
inneruserid = item.INNERUSERID,
|
|
ctime = item.CTIME
|
|
};
|
|
//LogHelper.Info("eid2:" + rule.eid);
|
|
rules.Add(rule);
|
|
}
|
|
|
|
if (rules.Any())
|
|
{
|
|
//using (var db = DbStore.GetConnection())
|
|
//{
|
|
// db.Open();
|
|
|
|
// var gid = rules.Select(p => p.salegroupid).Distinct().FirstOrDefault();
|
|
|
|
// //IList<IPredicate> predList = new List<IPredicate>();
|
|
// //predList.Add(Predicates.Field<Assign>(p => p.salegroupid, Operator.Eq, gid.Value));
|
|
// //IPredicateGroup predGroup = Predicates.Group(GroupOperator.And, predList.ToArray());
|
|
// ////list = this.GetList(predGroup);
|
|
|
|
// //IList<ISort> sort = new List<ISort>();
|
|
// //sort.Add(new Sort { PropertyName = "uniquekey", Ascending = true });
|
|
|
|
// var assignList = db.GetList<Assign>(Predicates.Field<Assign>(p => p.salegroupid, Operator.Eq, gid.Value));
|
|
|
|
// var assigns = new List<Assign>();
|
|
|
|
// foreach (var rule in rules)
|
|
// {
|
|
// var id = rule.ch + "," + rule.eid + "," + rule.salegroupid;
|
|
// var assign = assignList.FirstOrDefault(p => p.uniquekey == id);
|
|
// if(assign == null)
|
|
// {
|
|
// var info = new Assign() { uniquekey = id, ch = rule.ch, eid = rule.eid, salegroupid = rule.salegroupid.Value };
|
|
// assigns.Add(info);
|
|
// }
|
|
// }
|
|
|
|
// var trans = db.BeginTransaction();
|
|
|
|
// if (gid.HasValue)
|
|
// db.Delete<AssignRules>(Predicates.Field<AssignRules>(f => f.salegroupid, Operator.Eq, gid.Value), trans);
|
|
|
|
// db.Insert<AssignRules>(rules, trans);
|
|
|
|
// db.Insert<Assign>(assigns, trans);
|
|
|
|
// trans.Commit();
|
|
//}
|
|
|
|
//var gid = rules.Select(p => p.salegroupid).Distinct().FirstOrDefault();
|
|
var gids = rules.Select(p => p.salegroupid).Distinct();
|
|
//var assignList = new List<Assign>();
|
|
|
|
using (var db = new AssignContext())
|
|
{
|
|
//var assignList = db.Assign.Where(p => p.salegroupid == gid.Value);
|
|
//foreach (var item in gids)
|
|
//{
|
|
// assignList.AddRange(db.Assign.Where(p => p.salegroupid == item.Value).ToList());
|
|
//}
|
|
|
|
var assigns = new List<Assign>();
|
|
|
|
foreach (var rule in rules)
|
|
{
|
|
var id = rule.ch + "," + rule.eid + "," + rule.salegroupid;
|
|
//var assign = assignList.FirstOrDefault(p => p.uniquekey == id);
|
|
var assign = db.Assign.FirstOrDefault(p => p.uniquekey == id);
|
|
if (assign == null)
|
|
{
|
|
var info = new Assign() { uniquekey = id, ch = rule.ch, eid = rule.eid, salegroupid = rule.salegroupid.Value };
|
|
assigns.Add(info);
|
|
}
|
|
}
|
|
|
|
using (var trans = db.Database.BeginTransaction())
|
|
{
|
|
try
|
|
{
|
|
foreach (var item in gids)
|
|
{
|
|
var removeRules = db.AssignRules.Where(p => p.salegroupid == item.Value);
|
|
db.AssignRules.RemoveRange(removeRules);
|
|
}
|
|
|
|
db.AssignRules.AddRange(rules);
|
|
|
|
db.Assign.AddRange(assigns);
|
|
|
|
db.SaveChanges();
|
|
|
|
trans.Commit();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.Error(ex);
|
|
trans.Rollback();
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
public bool Reset(int ch, int sid)
|
|
{
|
|
using (var db = new AssignContext())
|
|
{
|
|
var prams = new List<MySqlParameter>
|
|
{
|
|
new MySqlParameter("@arg_ch", ch),
|
|
new MySqlParameter("@arg_sid", sid)
|
|
};
|
|
var ret = db.Database.ExecuteSqlCommand("call assign_resetAllocations(@arg_ch,@arg_sid)", prams.ToArray());
|
|
LogHelper.Info("ret:" + ret.ToString());
|
|
return ret >= 0;
|
|
}
|
|
}
|
|
|
|
//public bool SetQuantity(int ch, int eid)
|
|
//{
|
|
// using (var db = new AssignContext())
|
|
// {
|
|
// var prams = new List<MySqlParameter>
|
|
// {
|
|
// new MySqlParameter("@arg_ch", ch),
|
|
// new MySqlParameter("@arg_eid", eid)
|
|
// };
|
|
// var ret = db.Database.ExecuteSqlCommand("call assign_setquantity(@arg_ch,@arg_eid)", prams.ToArray());
|
|
// LogHelper.Info("ret:" + ret.ToString());
|
|
// return ret >= 0;
|
|
// }
|
|
//}
|
|
|
|
public IEnumerable<AssignDto> GetList(int ch)
|
|
{
|
|
using (var db = new AssignContext())
|
|
{
|
|
var list = db.Assign.Where(p => p.ch == ch).ToList();
|
|
return list.Select(p => new AssignDto(p.eid, p.salegroupid, p.allocations, p.todayallocations, p.quantity, p.tgquantity));
|
|
}
|
|
}
|
|
}
|
|
} |