ComplianceServer/oldcode/BLL/Res/RES_SALESGROUP_DETAIL_BL.cs

253 lines
11 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using WX.CRM.BLL.Base;
using WX.CRM.Common;
using WX.CRM.IBLL.Res;
using WX.CRM.Model.Entity;
using WX.CRM.Model.MAP;
namespace WX.CRM.BLL.Res
{
public class RES_SALESGROUP_DETAIL_BL : IRES_SALESGROUP_DETAIL_Q, IRES_SALESGROUP_DETAIL
{
/// <summary>
/// 获取分组员工明细列表
/// </summary>
/// <param name="groupId"></param>
/// <returns></returns>
public List<RES_SALESGROUP_DETAIL_Extend> GetRES_SALESGROUP_DETAIL_List(decimal groupId, string strategy)
{
using (var db = new crmContext())
{
var x = from a in db.RES_SALESGROUP_DETAIL
//join b in db.BAS_INNERUSER on a.INNERUSERID equals b.PKID
where a.GROUPID == groupId
&& a.STRATEGY == strategy
select new RES_SALESGROUP_DETAIL_Extend()
{
GROUPID = a.GROUPID,
INNERUSERID = a.INNERUSERID,
RESNUM = a.RESNUM,
EID = a.EID,
UserName = a.UNAME,
RESRATE = a.RESRATE,
GID = a.GID,
GNAME = a.GNAME,
GROUPRATIO = a.GROUPRATIO,
GROUPTYPE = a.GROUPTYPE,
USERTYPE = a.USERTYPE,
ACTTYPE = a.ACTTYPE,
STRATEGY = a.STRATEGY
};
return x.ToList();
}
}
/// <summary>
///
/// </summary>
/// <param name="errors"></param>
/// <param name="groupId"></param>
/// <param name="UserIds">1257266195-1205676517-服务号测试-1013-0 gid-uid-uname-eid-ratio</param>
/// <param name="groups"></param>
/// <param name="usertype">0自动平均分配1按比例分配</param>
/// <param name="grouptype">0虚拟组自定义组1跟组织结构相同</param>
/// <param name="act">group:按组分配组成员就不需要手动设置user按员工分配组成员需要手工设置</param>
/// <returns></returns>
public bool SaveSalesGroupDetial(ref ValidationErrors errors, decimal groupId, string UserIds, string groups, int usertype, int grouptype, string acttype, string ratetype, string strategy)
{
try
{
var groupList = new List<tempGroup>();
decimal groupRatio = 0;
if (grouptype == 1 && !string.IsNullOrEmpty(groups))
{
foreach (var item in groups.Split(','))
{
var arr = item.Split('-');
var gid = decimal.Parse(arr[0].ToString());
var gname = arr[1].ToString();
var groupratio = decimal.Parse(arr[2].ToString());
groupList.Add(new tempGroup(gid, gname, groupratio));
}
groupRatio = groupList.Sum(p => p.GROUPRATIO);
if (ratetype == "rate")
{
if (groupRatio != 100)
{
errors.Add("组分配比例不是100%");
}
}
}
var users = new List<string>();
if (!string.IsNullOrEmpty(UserIds) && acttype == "user")
{
foreach (var item in UserIds.Split(','))
{
if (string.IsNullOrEmpty(item))
continue;
users.Add(item);
}
//usertype = 0系统自动平均分配比例这个值是0
if (usertype == 1)
{
if (grouptype == 1)
{
decimal rate = 0;
foreach (var item in users)
{
var subItem = item.Split('-');
rate += decimal.Parse(subItem[4].ToString());
}
if (ratetype == "rate")
{
if (rate != groupList.Count * 100)
{
errors.Add("分配比例不是100%");
return false;
}
}
else
{
if (rate != groupRatio)
{
errors.Add("分配数量不正确");
return false;
}
}
}
else
{
decimal rate = 0;
foreach (var item in users)
{
var subItem = item.Split('-');
rate += decimal.Parse(subItem[4].ToString());
}
if (rate != 100)
{
errors.Add("分配比例不是100%");
return false;
}
}
}
}
using (var db = new crmContext())
{
var list = db.RES_SALESGROUP_DETAIL.Where(p => p.GROUPID == groupId && p.STRATEGY == strategy);
db.RES_SALESGROUP_DETAIL.RemoveRange(list);
if (users.Any())
{
foreach (var item in users)
{
//gid-uid-uname-eid-ratio
var subItem = item.Split('-');
var r = decimal.Parse(subItem[4].ToString());
if (ratetype == "rate")
{
r = r / 100;
}
var model = new RES_SALESGROUP_DETAIL()
{
PKID = new SEQUENCES_BL().Seq_base_get(),
GROUPID = groupId,
INNERUSERID = decimal.Parse(subItem[1].ToString()),
RESNUM = 0,
RESRATE = r,
EID = decimal.Parse(subItem[3].ToString()),
UNAME = subItem[2].ToString(),
GROUPTYPE = grouptype,
USERTYPE = usertype,
ACTTYPE = acttype,
RATETYPE = ratetype,
STRATEGY = strategy
};
if (grouptype == 1)
{
var gid = decimal.Parse(subItem[0].ToString());
var groupInfo = groupList.FirstOrDefault(p => p.GID == gid);
if (groupInfo == null)
{
errors.Add("找不到分组数据!");
throw new Exception("找不到分组数据!");
}
model.GID = groupInfo.GID;
model.GNAME = groupInfo.GNAME;
model.GROUPRATIO = groupInfo.GROUPRATIO;
if (ratetype == "rate")
{
model.GROUPRATIO = model.GROUPRATIO / 100;
}
}
db.RES_SALESGROUP_DETAIL.Add(model);
//var rateModel = new RES_SALESGROUP_RATE() { GROUPID = groupId, INNERUSERID = decimal.Parse(subItem[1].ToString()), RESRATE = r, EXETIME = DateTime.Now, UTIME = DateTime.Now };
//db.RES_SALESGROUP_RATE.Add(rateModel);
}
}
if (groupList.Any() && !users.Any())
{
foreach (var item in groupList)
{
var model = new RES_SALESGROUP_DETAIL()
{
PKID = new SEQUENCES_BL().Seq_base_get(),
GROUPID = groupId,
INNERUSERID = 0,
RESNUM = 0,
RESRATE = 0,
EID = 0,
UNAME = null,
GROUPTYPE = grouptype,
USERTYPE = usertype,
GID = item.GID,
GNAME = item.GNAME,
//GROUPRATIO = item.GROUPRATIO / 100,
ACTTYPE = acttype,
RATETYPE = ratetype,
STRATEGY = strategy
};
if (ratetype == "rate")
{
model.GROUPRATIO = model.GROUPRATIO / 100;
}
db.RES_SALESGROUP_DETAIL.Add(model);
}
}
db.SaveChanges();
return true;
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
LogHelper.Error(ex.ToString());
return false;
}
}
public class tempGroup
{
public tempGroup(decimal gID, string gNAME, decimal gROUPRATIO)
{
GID = gID;
GNAME = gNAME;
GROUPRATIO = gROUPRATIO;
}
public decimal GID { get; set; }
public string GNAME { get; set; }
public decimal GROUPRATIO { get; set; }
}
}
}