ComplianceServer/oldcode/ZXDService/Services/AssignRulesServices.cs

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));
}
}
}
}