415 lines
14 KiB
C#
415 lines
14 KiB
C#
using YLErp.Modules.SalesModule;
|
|
|
|
namespace YLErp.Web.Controllers
|
|
{
|
|
/// <summary>
|
|
/// 销售提成管理
|
|
/// </summary>
|
|
public class SalesCommissionManageController : BaseController
|
|
{
|
|
/// <summary>
|
|
/// 人员列表
|
|
/// </summary>
|
|
[MyAuthorize("销售管理-人员管理")]
|
|
public ActionResult SalesmenList()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 客户提成明细
|
|
/// </summary>
|
|
public ActionResult CommissionInfoByClient()
|
|
{
|
|
if (PS.Config.ErpElement.SalesCommissionCalculation == "公式1")
|
|
{
|
|
return View("FangDunCommissionInfoByClient");
|
|
}
|
|
return View();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 交易提成明细
|
|
/// </summary>
|
|
public ActionResult CommissionInfoByTrade()
|
|
{
|
|
if (PS.Config.ErpElement.SalesCommissionCalculation == "公式1")
|
|
{
|
|
return View("FangDunCommissionInfoByTrade");
|
|
}
|
|
|
|
return View();
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 查询销售人员信息
|
|
/// </summary>
|
|
[HttpPost]
|
|
public JsonResult SalesmenQuery(BaseSearchReq req, string ids, string departments)
|
|
{
|
|
var salesmenIds = new List<int>();
|
|
var salesmenDepartments = new List<string>();
|
|
if (!string.IsNullOrWhiteSpace(ids))
|
|
{
|
|
var temp = ids.Split(',');
|
|
if (temp.Count() > 0)
|
|
{
|
|
foreach (var id in temp)
|
|
{
|
|
int.TryParse(id, out var i);
|
|
salesmenIds.Add(i);
|
|
}
|
|
}
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(departments))
|
|
{
|
|
var temp = departments.Split(',');
|
|
if (temp.Count() > 0)
|
|
{
|
|
foreach (var department in temp)
|
|
{
|
|
salesmenDepartments.Add(department);
|
|
}
|
|
}
|
|
}
|
|
|
|
var sList = new SalesmenDataService(CurUser).SalesmenQuery(req, salesmenIds, salesmenDepartments);
|
|
|
|
return Json(sList);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查看修改销售人员信息
|
|
/// </summary>
|
|
public ActionResult SalesmanEdit(string enid)
|
|
{
|
|
var salesman = new Salesman();
|
|
if (string.IsNullOrEmpty(enid) || enid == "0")
|
|
{
|
|
return View(salesman);
|
|
}
|
|
int.TryParse(enid, out var id);
|
|
salesman = yldb.salesmen.Find(id);
|
|
return View(salesman);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 上传销售人员信息
|
|
/// </summary>
|
|
public ActionResult SalesmenUpload()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
public ActionResult UploadSalesmenMain(string MasterType)
|
|
{
|
|
if (Request.Form.Files.Count == 0)
|
|
{
|
|
return JsonError("缺少上传文件");
|
|
}
|
|
|
|
var file = Request.Form.Files[0];
|
|
var fileExt = Path.GetExtension(file.FileName)?.ToLowerInvariant();
|
|
|
|
if (fileExt == ".csv")
|
|
{
|
|
return UploadSalesmen(file, MasterType);
|
|
}
|
|
else if (fileExt == ".xlsx")
|
|
{
|
|
return UploadSalesmenExcel(file);
|
|
}
|
|
else
|
|
{
|
|
return JsonError("请上传xlsx或csv格式文件");
|
|
}
|
|
}
|
|
|
|
public ActionResult UploadSalesmen(IFormFile file, string MasterType)
|
|
{
|
|
var fileName = "";
|
|
|
|
//上传交易存储目录
|
|
var MainUploadPath = "/App_Upload/Salesman";
|
|
|
|
var filePathName = string.Empty;
|
|
|
|
if (Request.Form.Files.Count == 0)
|
|
{
|
|
return JsonError("保存失败");
|
|
}
|
|
try
|
|
{
|
|
//上传同名文件会覆盖
|
|
fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + file.FileName;
|
|
var directoryName = string.Format("{1}{0}/", MasterType, MainUploadPath);
|
|
filePathName = directoryName + fileName; //自行处理保存
|
|
var pafile = Server.MapPath(directoryName);
|
|
if (!Directory.Exists(pafile))
|
|
{
|
|
Directory.CreateDirectory(pafile);
|
|
}
|
|
//Request.Form.Files[0].FileName
|
|
var pa = Server.MapPath(filePathName);
|
|
|
|
file.SaveAs(pa); //把文件上传到服务器的绝对路径上
|
|
|
|
var result = new SalesmenImportService(CurUser).UploadSalesmenCsv(pa);
|
|
if (result.IsSuccess)
|
|
{
|
|
return JsonSuccess("导入成功");
|
|
}
|
|
return JsonError(result.Message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
LogFactory.GetLogger(nameof(ClientController)).Error("UploadSalesmanCsv", ex);
|
|
return JsonError(ex.Message);
|
|
};
|
|
}
|
|
|
|
public ActionResult UploadSalesmenExcel(IFormFile file)
|
|
{
|
|
try
|
|
{
|
|
using var openStream = file.OpenReadStream();
|
|
var result = new SalesmenImportService(CurUser).UploadSalesmenExcel(openStream, CurUser.UserId, CurUser.UserName);
|
|
if (result.IsSuccess)
|
|
{
|
|
return JsonSuccess("导入成功");
|
|
}
|
|
return JsonError(result.Message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogFactory.GetLogger(nameof(ClientController)).Error("UploadSalesmenExcel", ex);
|
|
return JsonError(ex.Message);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 更新上传信息
|
|
/// </summary>
|
|
[HttpPost]
|
|
public async Task<JsonResult> SalesmanEditJson()
|
|
{
|
|
var salesman = new Salesman();
|
|
await TryUpdateModelAsync(salesman);
|
|
var result = new SalesmenDataService(CurUser).SaveSalesman(salesman);
|
|
if (result)
|
|
{
|
|
return JsonSuccess("更新成功", salesman);
|
|
}
|
|
return JsonSuccess("更新异常", salesman);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除销售员信息
|
|
/// </summary>
|
|
[HttpPost]
|
|
public JsonResult DeleteSalesman(string id)
|
|
{
|
|
int.TryParse(id, out var i);
|
|
var salesman = yldb.salesmen.Find(i);
|
|
if (salesman == null)
|
|
{
|
|
return JsonError("删除失败,找不到该销售员");
|
|
}
|
|
yldb.salesmen.Remove(salesman);
|
|
yldb.SaveChanges();
|
|
return JsonSuccess("删除成功");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 客户提成明细查询
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public JsonResult CommissionQueryByClient(BaseSearchReq req, string Name, string Department, string ClientName)
|
|
{
|
|
var salesmanIds = new List<int>();
|
|
var salesmanDepartments = new List<string>();
|
|
var commissionClients = new List<int>();
|
|
if (!string.IsNullOrWhiteSpace(Name))
|
|
{
|
|
var temp = Name.Split(',');
|
|
if (temp.Count() > 0)
|
|
{
|
|
foreach (var id in temp)
|
|
{
|
|
int.TryParse(id, out var i);
|
|
salesmanIds.Add(i);
|
|
}
|
|
}
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(Department))
|
|
{
|
|
var temp = Department.Split(',');
|
|
if (temp.Count() > 0)
|
|
{
|
|
foreach (var department in temp)
|
|
{
|
|
salesmanDepartments.Add(department);
|
|
}
|
|
}
|
|
}
|
|
if (!string.IsNullOrEmpty(ClientName))
|
|
{
|
|
var temp = ClientName.Split(',');
|
|
if (temp.Count() > 0)
|
|
{
|
|
foreach (var client in temp)
|
|
{
|
|
int.TryParse(client, out var i);
|
|
commissionClients.Add(i);
|
|
}
|
|
}
|
|
}
|
|
var sList = new SalesCommissionDataService(CurUser).CommissionQueryByClient(req, salesmanIds, salesmanDepartments, commissionClients);
|
|
if (sList != null)
|
|
{
|
|
return Json(sList);
|
|
}
|
|
return JsonError("未查到结果");
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 客户提成明细查询
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public JsonResult FangDunCommissionQueryByClient(BaseSearchReq req, string Name, string Department, string ClientName)
|
|
{
|
|
var salesmanIds = new List<int>();
|
|
var salesmanDepartments = new List<string>();
|
|
var commissionClients = new List<int>();
|
|
if (!string.IsNullOrWhiteSpace(Name))
|
|
{
|
|
var temp = Name.Split(',');
|
|
if (temp.Count() > 0)
|
|
{
|
|
foreach (var id in temp)
|
|
{
|
|
int.TryParse(id, out var i);
|
|
salesmanIds.Add(i);
|
|
}
|
|
}
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(Department))
|
|
{
|
|
var temp = Department.Split(',');
|
|
if (temp.Count() > 0)
|
|
{
|
|
foreach (var department in temp)
|
|
{
|
|
salesmanDepartments.Add(department);
|
|
}
|
|
}
|
|
}
|
|
if (!string.IsNullOrEmpty(ClientName))
|
|
{
|
|
var temp = ClientName.Split(',');
|
|
if (temp.Count() > 0)
|
|
{
|
|
foreach (var client in temp)
|
|
{
|
|
int.TryParse(client, out var i);
|
|
commissionClients.Add(i);
|
|
}
|
|
}
|
|
}
|
|
var sList = new SalesCommissionDetailDataService(CurUser).FunDunCommissionDetailQueryByClient(req, salesmanIds, salesmanDepartments, commissionClients);
|
|
if (sList != null)
|
|
{
|
|
return Json(sList);
|
|
}
|
|
return JsonError("未查到结果");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 客户提成明细导出
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public ActionResult CommissionListByClientExport(BaseSearchReq req, string ids, string departments, string clients)
|
|
{
|
|
var list = ((SearchListResult<CommissionsGroupByClient>)CommissionQueryByClient(req, ids, departments, clients).Value).rows;
|
|
var templateFilePath = Server.MapPath("~/App_Docs/导出模板/客户销售提成明细.xlsx");
|
|
using (var generator = Office.ExcelModule.ExcelGenerator.UseTemplateGenerator(templateFilePath).
|
|
AddVariable(new { list }))
|
|
{
|
|
return File(generator.GenerateBytes(), "application/vnd.ms-excel", "客户提成明细_" + DateTime.Today.ToString("yyyy-MM-dd") + ".xlsx");
|
|
}
|
|
}
|
|
public ActionResult FangDunCommissionListByClientExport(BaseSearchReq req, string ids, string departments, string clients)
|
|
{
|
|
var list = ((SearchListResult<CommissionsGroupByClient>)FangDunCommissionQueryByClient(req, ids, departments, clients).Value).rows;
|
|
var templateFilePath = Server.MapPath("~/App_Docs/导出模板/客户销售提成明细.xlsx");
|
|
using (var generator = Office.ExcelModule.ExcelGenerator.UseTemplateGenerator(templateFilePath).
|
|
AddVariable(new { list }))
|
|
{
|
|
return File(generator.GenerateBytes(), "application/vnd.ms-excel", "客户提成明细_" + DateTime.Today.ToString("yyyy-MM-dd") + ".xlsx");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 交易提成明细查询
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public JsonResult CommissionQuery(SalesCommissionReq req)
|
|
{
|
|
var sList = new SalesCommissionDataService(CurUser).CommissionQuery(req);
|
|
if (sList != null)
|
|
{
|
|
return Json(sList);
|
|
}
|
|
return JsonError("未查到结果");
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 方顿交易提成明细查询
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public JsonResult FangDunCommissionQuery(SalesCommissionDetailReq req)
|
|
{
|
|
var sList = new SalesCommissionDetailDataService(CurUser).CommissionDetailQuery(req);
|
|
if (sList != null)
|
|
{
|
|
return Json(sList);
|
|
}
|
|
return JsonError("未查到结果");
|
|
}
|
|
public JsonResult GetClientDefaultSalesmen(int ClientId)
|
|
{
|
|
if (PS.Config.ErpElement.SaleMode == YLErp.Configuration.Enums.SaleMode.SaleMen)
|
|
{
|
|
var seller = clientDB.client.Where(o => o.id == ClientId).Select(o => o.Seller).FirstOrDefault();
|
|
if (string.IsNullOrWhiteSpace(seller))
|
|
{
|
|
return JsonSuccessData(null);
|
|
}
|
|
|
|
var salesmanIds = seller.Split(',');
|
|
return Json(salesmanIds);
|
|
}
|
|
else if (PS.Config.ErpElement.SaleMode == YLErp.Configuration.Enums.SaleMode.CustomerManager)
|
|
{
|
|
|
|
var customerManager = clientDB.client.Where(o => o.id == ClientId).Select(o => o.CustomerManagerId).FirstOrDefault();
|
|
if (string.IsNullOrWhiteSpace(customerManager))
|
|
{
|
|
return JsonSuccessData(null);
|
|
}
|
|
|
|
var customerManagerIds = customerManager.Split(',');
|
|
return Json(customerManagerIds);
|
|
}
|
|
return JsonSuccessData(null);
|
|
}
|
|
}
|
|
|
|
} |