Commit 4f79d7f0 by guanzhenshan

增加每日销售额报表

parent 0cb40f8a
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models
{
public class dc_daily_platformamout
{
/// <summary>
/// id
/// </summary>
public int id { get; set; }
/// <summary>
/// 记录日期
/// </summary>
public DateTime day { get; set; }
/// <summary>
/// 放款时间
/// </summary>
public DateTime put_amount_time { get; set; }
/// <summary>
/// 帐号
/// </summary>
public string account { get; set; }
/// <summary>
/// 平台编码
/// </summary>
public string platformcode { get; set; }
/// <summary>
/// 平台名称
/// </summary>
public string platformname { get; set; }
/// <summary>
/// 币种
/// </summary>
public string currency { get; set; }
/// <summary>
/// 放款金额(原币种)
/// </summary>
public decimal put_amount { get; set; }
/// <summary>
/// 放款金额(人民币)
/// </summary>
public decimal put_amount_rmb { get; set; }
/// <summary>
/// 冻结金额(原币种)
/// </summary>
public decimal freeze_amount { get; set; }
/// <summary>
/// 冻结金额(人民币)
/// </summary>
public decimal freeze_amount_rmb { get; set; }
/// <summary>
/// 月放款次数
/// </summary>
public int putcount { get; set; }
/// <summary>
/// 是否删除,1:已删除,0:未删除
/// </summary>
public int delstatus { get; set; }
}
}
......@@ -767,5 +767,161 @@ namespace Bailun.DC.Services
#endregion
#region 每日平台销售额(小平台)
/// <summary>
/// 每日平台销售额 统计分页
/// </summary>
/// <param name="day">记录日期</param>
/// <param name="platformcode">平台编码</param>
/// <param name="page">当前页</param>
/// <param name="pagesize">每页记录数</param>
/// <param name="order">排序字段</param>
/// <param name="sort">升序或降序</param>
/// <param name="total">总记录数</param>
/// <returns></returns>
public List<dc_daily_platformamout> ListDailyPlatformAmountCount(DateTime day, string platformcode, int page, int pagesize, string order, string sort, ref int total)
{
var sql = "select day,count(id) as account,platformcode,platformname,currency,sum(put_amount) as put_amount,sum(put_amount_rmb) as put_amount_rmb,sum(freeze_amount) as freeze_amount,sum(freeze_amount_rmb) as freeze_amount_rmb,put_amount_time from dc_daily_platformamout where delstatus=0 and day='" + day.ToString("yyyy-MM-dd") + "' ";
if (!string.IsNullOrWhiteSpace(platformcode))
{
sql += " and platformcode='" + platformcode + "'";
}
sql += " group by platformcode,currency,put_amount_time";
string countsql = sql;
sql += " limit " + (page - 1) * pagesize + "," + pagesize;
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var list = cn.Query<dc_daily_platformamout>(sql).AsList();
total = cn.ExecuteScalar<int>("select count(1) from (" + countsql + ") as tb");
return list;
}
}
/// <summary>
/// 每日平台销售列表 分页
/// </summary>
/// <param name="day">记录日期</param>
/// <param name="platformcode">平台编码</param>
/// <param name="page">当前页</param>
/// <param name="pagesize">每页记录数</param>
/// <param name="order">排序字段</param>
/// <param name="sort">升序或降序</param>
/// <param name="total">符合条件的总记录数</param>
/// <returns></returns>
public List<dc_daily_platformamout> ListDailyPlatformAmount(DateTime day, string platformcode, int page, int pagesize, string order, string sort, ref int total)
{
var sql = "select * from dc_daily_platformamout where delstatus=0 and day='" + day.ToString("yyyy-MM-dd") + "' ";
if (!string.IsNullOrWhiteSpace(platformcode))
{
sql += " and platformcode='" + platformcode + "'";
}
sql += " order by id";
string countsql = sql;
sql += " limit " + (page - 1) * pagesize + "," + pagesize;
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var list = cn.Query<dc_daily_platformamout>(sql).AsList();
total = cn.ExecuteScalar<int>("select count(1) from (" + countsql + ") as tb");
return list;
}
}
/// <summary>
/// 批量插入每日销售额
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public string AddDailySale(List<dc_daily_platformamout> list)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
try
{
foreach (var item in list)
{
cn.Insert<dc_daily_platformamout>(item);
}
return "";
}
catch (Exception ex)
{
return ex.Message;
}
}
}
/// <summary>
/// 删除每日销售额
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public string DeleteDailySale(int id)
{
try
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
var m = cn.QueryFirstOrDefault<dc_platform_balance>("select * from dc_daily_platformamout where id=" + id);
if (m == null)
{
return "找不到该记录。";
}
var sql = "update dc_daily_platformamout set delstatus=1 where id=" + id;
var result = cn.Execute(sql);
if (result > 0)
{
return "";
}
return "提交异常,请重试!";
}
}
catch (Exception ex)
{
return "提交异常" + ex.Message;
}
}
#endregion
}
}
......@@ -990,6 +990,233 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
#endregion
#region 每日销售额
/// <summary>
/// 每日销售额统计
/// </summary>
public ActionResult DailySalesCount()
{
return View();
}
/// <summary>
/// 每日销售额统计
/// </summary>
/// <returns></returns>
public string DailySalesCountJson(BtTableParameter request, DateTime day, string platformcode)
{
var services = new Services.FinanceReportServices();
var total = 0;
var list = services.ListDailyPlatformAmountCount(day, platformcode, request.pageIndex, request.limit, request.sort, request.order, ref total);
var obj = list.Select(p => new {
day = p.day.ToString("yyyy-MM-dd"),
p.account,
p.currency,
p.platformcode,
p.platformname,
p.put_amount,
p.put_amount_rmb,
put_amount_time = p.put_amount_time.ToString("yyyy-MM-dd"),
p.freeze_amount,
});
return JsonConvert.SerializeObject(new { total = obj.Count(), rows = obj });
}
/// <summary>
/// 每日销售额明细
/// </summary>
/// <returns></returns>
public ActionResult DailySales()
{
return View();
}
/// <summary>
/// 每日销售额明细
/// </summary>
/// <param name="pagination"></param>
/// <param name="day"></param>
/// <param name="code"></param>
/// <returns></returns>
public string DailySalesJson(BtTableParameter request, DateTime day, string code)
{
var services = new Services.FinanceReportServices();
var total = 0;
var list = services.ListDailyPlatformAmount(day, code, request.pageIndex, request.limit, request.sort, request.order, ref total);
var obj = list.Select(p => new {
day = p.day.ToString("yyyy-MM-dd"),
put_amount_time = p.put_amount_time.ToString("yyyy-MM-dd"),
p.account,
p.currency,
p.platformcode,
p.platformname,
p.freeze_amount,
p.freeze_amount_rmb,
p.putcount,
p.put_amount,
p.put_amount_rmb,
p.id,
});
return JsonConvert.SerializeObject(new { total = obj.Count(), rows = obj });
}
/// <summary>
/// 上传每日销售额
/// </summary>
/// <returns></returns>
public JsonResult UploadDailySales()
{
if (Request.Form.Files.Count == 0)
{
return Json(new
{
success = false,
msg = "请上传文件!"
});
}
var file = Request.Form.Files[0];
Dictionary<string, DataTable> dic = Base.NpolHelper.ExcelToDataTable(file.OpenReadStream(), file.FileName, true);
if (dic.Count > 0)
{
var tb = dic.FirstOrDefault();
var list = new List<dc_daily_platformamout>();
var service = new Services.FinanceReportServices();
var listRate = new List<Tuple<string, decimal>>();
var commonServices = new Services.CommonServices();
for (var i = 0; i < tb.Value.Rows.Count; i++)
{
var row = tb.Value.Rows[i];
try
{
var platformcode = row["平台名称"].ToString();
var account = row["平台账号"].ToString();
var currency = row["币种"].ToString();
var puttime = DateTime.Parse(row["放款时间"].ToString());
var put_amount = decimal.Parse(row["放款金额"].ToString());
var freeze_amount = decimal.Parse(row["冻结金额"].ToString());
var count = int.Parse(row["月放款次数"].ToString());
var day = DateTime.Parse(row["统计日期"].ToString());
if (string.IsNullOrEmpty(platformcode))
{
return Json(new
{
success = false,
msg = "平台编码不能为空!",
});
}
if (puttime < DateTime.Parse("1999-01-01"))
{
return Json(new
{
success = false,
msg = "请填写正确的放款时间!",
});
}
var objplatform = service.GetPlatformByName(platformcode);
if (objplatform == null)
{
return Json(new
{
success = false,
msg = "系统找不到该销售平台【" + platformcode + "】,请检测平台名称是否正确或联系管理员。",
});
}
var rate = listRate.Where(a => a.Item1 == currency).FirstOrDefault();
if (rate == null)
{
var objRate = Services.CommonServices.GetExchangeRate(currency, "CNY");
rate = new Tuple<string, decimal>(currency, objRate);
listRate.Add(rate);
}
list.Add(new dc_daily_platformamout
{
account = account,
currency = currency,
day = day,
delstatus = 0,
platformcode = objplatform.english_name,
platformname = objplatform.china_name,
put_amount_time = puttime,
put_amount = put_amount,
put_amount_rmb = put_amount * rate.Item2,
freeze_amount = freeze_amount,
freeze_amount_rmb = freeze_amount * rate.Item2,
putcount = count,
});
}
catch (Exception ex)
{
return Json(new
{
success = false,
msg = "导入失败,异常信息:" + ex.Message
});
}
}
if (list.Count == 0)
{
return Json(new
{
success = false,
msg = "表格没有数据。",
});
}
var result = service.AddDailySale(list);
return Json(new
{
success = string.IsNullOrEmpty(result),
msg = result
});
}
else
{
return Json(new
{
success = false,
msg = "请上传文件"
});
}
}
/// <summary>
/// 删除每日销售额
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost]
public JsonResult DelDailySales(int id)
{
var service = new Services.FinanceReportServices();
var result = service.DeleteDailySale(id);
return Json(new
{
success = string.IsNullOrEmpty(result),
msg = result,
});
}
#endregion
#region Common
/// <summary>
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
namespace Bailun.DC.Web.Areas.Reports.Controllers
{
[Area("Reports")]
public class OrdersController : Controller
{
public IActionResult Index()
{
return View();
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
namespace Bailun.DC.Web.Areas.Reports.Controllers
{
[Area("Reports")]
public class SkuController : Controller
{
public IActionResult Index()
{
return View();
}
}
}
\ No newline at end of file

@{
ViewData["Title"] = "每日销售额明细";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
}
<div class="row">
<div class="col-sm-12">
<div class="ibox-content m-b-sm border-bottom">
<form id="toolbar">
<div class="form-inline" style="line-height:40px;">
<div class="form-group">
<label>平台:</label>
<select id="code" name="code" class="form-control" style="width: 120px;">
<option value="">选择平台</option>
</select>
</div>
<div class="form-group">
<label>日期:</label>
<input type="text" class="form-control layer-date" id="day" name="day" style="width:120px;" placeholder="" value="@DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")" />
</div>
<div class="form-group">
<button type="button" class="btn btn-primary" onclick="list();"><i class="fa fa-search"></i>&nbsp;查询</button>
</div>
</div>
</form>
</div>
<div class="ibox-content m-b-sm border-bottom">
<table id="roletable" style="table-layout:fixed;"></table>
</div>
</div>
</div>
@section css{
<style>
.mules {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
}
@section scripts{
<script>
var tb;
$(document).ready(function (){
var day = getUrlParam('day');
if (day != '') {
$('#day').val(day);
}
var code = getUrlParam('code');
if (code != '') {
$('#code').val(code);
if ($('#code').val() == null) {
$('#code').append('<option value="' + code + '">' + code + '</option>');
$('#code').val(code);
}
}
laydate.render({ elem: '#day' });
var height = document.body.clientHeight;
$("#roletable").attr("data-height", (height - 150));
list();
listplatform();
})
function list() {
var columns = [
{ field: 'day', title: '统计日期', width: '120' },
{ field: 'platformname', title: '平台名称', width: '120', sortable: false },
{
field: 'account', title: '帐号', width: '140', sortable: true, formatter: function (idx, data) {
return '<p class="mules" title="' + data.account + '">' + data.account + '</p>';
}
},
{ field: 'currency', title: '币种', width: '100', sortable: true},
{ field: 'put_amount', title: '放款金额(原币)', width: '140', sortable: true},
{ field: 'put_amount_rmb', title: '放款金额(人民币)', width: '140', sortable: true},
{ field: 'freeze_amount', title: '冻结金额(原币)', width: '140', sortable: true },
{ field: 'freeze_amount_rmb', title: '冻结金额(人民币)', width: '150', sortable: true },
{ field: 'put_amount_time', title: '放款时间', width: '130' },
{ field: 'putcount', title: '月放款次数', width: '130', sortable: true},
{
field: 'option', title: '操作', width: '140px', formatter: function (idx, data) {
var s = '<button class="btn btn-danger btn-xs" onclick="DelDetail(\'' + rowObject.id + '\');">删除</button>';
return s;
}
}
];
var url = '@Url.Content("~/Reports/Finance/DailySalesJson")' + '?' + $("#toolbar").serialize();
if (tb == undefined) {
tb = OnlyTable("roletable", columns, url, "",);
}
else {
tb.bootstrapTable('refresh', { url: url });
}
}
function DelDetail(id) {
if (confirm('确定要删除该记录吗?')) {
$.ajax({
url: '@Url.Content("~/Reports/Finance/DelDailySales")',
type: "POST",
data: 'id='+id,
success: function (result) {
if (result.success) {
alert("删除成功!");
list();
}
else {
alert(result.msg);
}
}
})
}
}
function listplatform() {
$.ajax({
url: '@Url.Content("~/Reports/Finance/ListPlatform")',
type: "POST",
data: '',
success: function (result) {
if (result && result.length > 0) {
for (var i = 0; i < result.length; i++) {
$('#code').append('<option value="' + result[i].code + '">' + result[i].code + '</option>')
}
}
}
})
}
</script>
}

@{
ViewData["Title"] = "每日销售额统计";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
}
<div class="row">
<div class="col-sm-12">
<div class="ibox-content m-b-sm border-bottom">
<form id="toolbar">
<div class="form-inline" style="line-height:40px;">
<div class="form-group">
<label>平台:</label>
<select id="platformcode" name="platformcode" class="form-control" style="width: 120px;">
<option value="">选择平台</option>
</select>
</div>
<div class="form-group">
<label>日期:</label>
<input type="text" class="form-control layer-date" id="day" name="day" style="width:120px;" placeholder="" value="@DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")" />
</div>
<div class="form-group">
<button type="button" class="btn btn-primary" onclick="list();"><i class="fa fa-search"></i>&nbsp;查询</button>
<button id="btn_Upload" class="btn btn-success">导入</button>
<a id="btn_UpdateTemplate" class="btn btn-default" href="@Url.Content("~/templatefile/dailysale_template.xls")" target="_blank">下载导入模版</a>
</div>
</div>
</form>
</div>
<div class="ibox-content m-b-sm border-bottom">
<table id="roletable" style="table-layout:fixed;"></table>
</div>
</div>
</div>
@section css{
<link href="~/js/webuploader-0.1.5/webuploader.css" rel="stylesheet" />
<style>
.webuploader-pick {
position: relative;
display: block;
cursor: pointer;
background: none;
padding: 0px;
color: #fff;
text-align: center;
border-radius: 3px;
overflow: hidden;
}
.webuploader-container {
background-color: cornflowerblue !important;
}
</style>
}
@section scripts{
<script src="~/js/webuploader-0.1.5/webuploader.min.js"></script>
<script>
var BASE_URL = '@(Url.Content("~/js/webuploader-0.1.5/"))';
var tb;
$(document).ready(function () {
uploadfile('btn_Upload',
'@Url.Content("~/Reports/Finance/UploadDailySales")',
function(result){
if(result.result.success)
{
alert('上传成功!');
}
else
{
alert(result.result.msg);
}
});
laydate.render({ elem: '#day' });
var height = document.body.clientHeight;
$("#roletable").attr("data-height", (height - 150));
list();
listplatform();
})
function list() {
var columns = [
{ field: 'day', title: '统计日期', width: '120' },
{ field: 'platformname', title: '平台名称', width: '120', sortable: false },
{ field: 'account', title: '帐号数', width: '100', sortable: true},
{ field: 'currency', title: '币种', width: '100', sortable: true},
{ field: 'put_amount', title: '放款金额(原币)', width: '140', sortable: true},
{ field: 'put_amount_rmb', title: '放款金额(人民币)', width: '140', sortable: true},
{ field: 'freeze_amount', title: '冻结金额(原币)', width: '140', sortable: true},
{ field: 'freeze_amount_rmb', title: '冻结金额(人民币)', width: '140', sortable: true },
{ field: 'put_amount_time', title: '放款时间', width: '130'},
{
field: 'option', title: '操作',width:'120px', formatter: function (idx, data) {
var s = '<button class="btn btn-primary" onclick="ShowDetail(\'' + data.platformcode + '\',\'' + data.platformname + '\',\'' + data.day + '\');">查看明细</button>';
return s;
}
}
];
var url = '@Url.Content("~/Reports/Finance/DailySalesCountJson")' + '?' + $("#toolbar").serialize();
if (tb == undefined) {
tb = OnlyTable("roletable", columns, url, "",);
}
else {
tb.bootstrapTable('refresh', { url: url });
}
}
function uploadfile(id,url,callback)
{
var uploader = new WebUploader.Uploader({
// swf文件路径
swf: BASE_URL + 'Uploader.swf',
// 文件接收服务端。
server: url!=undefined?url:'@Url.Content("~/File/UploadFile")',
// 选择文件的按钮。可选。
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
pick: '#'+id,
// 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
resize: false,
auto:true
});
uploader.on('uploadSuccess', function (file, response) {
if(callback!=undefined)
{
callback(response);
}
});
uploader.on('uploadError', function (file) {
layer.msg("上传出错");
});
}
function ShowDetail(code, name, day) {
showdetail(name + '的每日销售额明细', '@Url.Content("~/Reports/Finance/DailySales?code=")'+code+'&day='+day+'&n='+name);
}
function listplatform() {
$.ajax({
url: '@Url.Content("~/Reports/Finance/ListPlatform")',
type: "POST",
data: '',
success: function (result) {
if (result && result.length > 0) {
for (var i = 0; i < result.length; i++) {
$('#platformcode').append('<option value="' + result[i].code + '">' + result[i].code + '</option>');
}
}
}
})
}
</script>
}
......@@ -11,7 +11,7 @@
<div class="form-inline" style="line-height:40px;">
<div class="form-group">
<label>平台:</label>
<select id="sel_platform" class="form-control" style="width: 120px;">
<select id="platformcode" name="platformcode" class="form-control" style="width: 120px;">
<option value="">选择平台</option>
</select>
</div>
......@@ -156,7 +156,7 @@
success: function (result) {
if (result && result.length > 0) {
for (var i = 0; i < result.length; i++) {
$('#sel_platform').append('<option value="' + result[i].code + '">' + result[i].code + '</option>')
$('#platformcode').append('<option value="' + result[i].code + '">' + result[i].code + '</option>');
}
}
}
......
......@@ -27,6 +27,8 @@
<ItemGroup>
<Folder Include="Areas\Reports\Data\" />
<Folder Include="Areas\Reports\Models\" />
<Folder Include="Areas\Reports\Views\Orders\" />
<Folder Include="Areas\Reports\Views\Sku\" />
</ItemGroup>
<ItemGroup>
......
......@@ -232,6 +232,9 @@
<a class="J_menuItem" href="@Url.Content("~/Reports/Finance/ListAccoutBalanceCount")" data-index="0">平台余额</a>
</li>
<li>
<a class="J_menuItem" href="@Url.Content("~/Reports/Finance/DailySalesCount")" data-index="0">每日销售额</a>
</li>
<li>
<a class="J_menuItem" href="@Url.Content("~/Reports/Finance/AdministrativeCost")" data-index="0">管理成本报表</a>
</li>
</ul>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment