Commit f3d79838 by guanzhenshan

修复物流供应商往来统计服务数据异常的问题;增加物流供应商往来统计报表页面

parent 24d4214c
...@@ -160,7 +160,7 @@ group by t1.receive_unit"; ...@@ -160,7 +160,7 @@ group by t1.receive_unit";
foreach (var item in list) foreach (var item in list)
{ {
//获取期初 //获取期初
var sql = $"select * from dc_daily_logistics_supplier_transaction where suppliername='{item.suppliername}' and day='{item.day.AddDays(-1).ToString("yyyy-MM-dd")}'"; var sql = $"select * from dc_daily_logistics_supplier_transaction where suppliername='{item.suppliername}' and day<'{item.day.ToString("yyyy-MM-dd")}' order by id desc limit 1";
var objStart = cn.QueryFirstOrDefault<dc_daily_logistics_supplier_transaction>(sql); var objStart = cn.QueryFirstOrDefault<dc_daily_logistics_supplier_transaction>(sql);
if (objStart != null) if (objStart != null)
{ {
......
using System;
using System.Collections.Generic;
using System.Text;
using Bailun.DC.Models;
using Bailun.DC.DB;
using Dapper;
using MySql.Data.MySqlClient;
using System.Linq;
using Bailun.DC.Models.Orders;
namespace Bailun.DC.Services
{
/// <summary>
/// 物流相关服务
/// </summary>
public class LogisticsServices
{
/// <summary>
/// 物流供应商往来统计报表
/// </summary>
/// <param name="request">分页信息</param>
/// <param name="start">起始时间</param>
/// <param name="end">结束时间</param>
/// <param name="suppliername">供应商名称</param>
/// <param name="total"></param>
/// <returns></returns>
public List<dc_daily_logistics_supplier_transaction> ListSupplierTransaction(BtTableParameter request, DateTime start, DateTime end, string suppliername,ref int total)
{
var sqlparam = new DynamicParameters();
var sql = "select t1.suppliername,sum(t1.amount_happen) amount_happen,sum(t1.amount_pay) amount_pay,sum(t1.amount_receipt) amount_receipt,sum(t1.amount_other) as amount_other," +
"(select st.amount_end from dc_daily_logistics_supplier_transaction st where max(t1.id) = st.id)AS amount_end " +
" from dc_daily_logistics_supplier_transaction t1 ";
sql += $" where t1.day>='{start.ToString("yyyy-MM-dd")}' and t1.day<='{end.ToString("yyyy-MM-dd")}' ";
var sqlcount = $"select count(0) from (select suppliername from dc_daily_logistics_supplier_transaction t1 where t1.day>='{start.ToString("yyyy-MM-dd")}' and t1.day<='{end.ToString("yyyy-MM-dd")}'";
if (!string.IsNullOrEmpty(suppliername))
{
sql += " and t1.suppliername=@suppliername";
sqlparam.Add("suppliername", suppliername);
sqlcount += " and t1.suppliername=@suppliername";
}
sql += " group by t1.suppliername ";
sqlcount += " group by t1.suppliername) t0 ";
if (!string.IsNullOrEmpty(request.sort))
{
sql += " order by t1."+request.sort+" "+request.order;
}
//var sql_start_end = $"left join dc_daily_logistics_supplier_transaction t1 on t1.suppliername=t0.suppliername and t1.day='{start.ToString("yyyy-MM-dd")}'";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Page<dc_daily_logistics_supplier_transaction>(request.pageIndex, request.limit, sql, ref total,sqlparam, sqlcount).ToList();
//获取期初
sql = $@"select t1.amount_end,t1.suppliername from dc_daily_logistics_supplier_transaction t1 where t1.id in (
select max(id) as id from dc_daily_logistics_supplier_transaction where day<'{start.ToString("yyyy-MM-dd")}' group by suppliername)";
var objStart = cn.Query<dc_daily_logistics_supplier_transaction>(sql);
foreach (var item in obj)
{
var o = objStart.Where(a => a.suppliername == item.suppliername).FirstOrDefault();
if (o != null)
{
item.amount_start = o.amount_end;
}
}
return obj;
}
}
/// <summary>
/// 物流供应商往来统计报表汇总
/// </summary>
/// <param name="start"></param>
/// <param name="end"></param>
/// <param name="suppliername"></param>
/// <returns></returns>
public dc_daily_logistics_supplier_transaction ListSupplierTransactionCount(DateTime start, DateTime end, string suppliername)
{
var sqlparam = new DynamicParameters();
var sql = "select sum(t1.amount_happen) amount_happen,sum(t1.amount_pay) amount_pay,sum(t1.amount_receipt) amount_receipt,sum(t1.amount_other) as amount_other" +
" from dc_daily_logistics_supplier_transaction t1 ";
var sqlwhere = $" where t1.day>='{start.ToString("yyyy-MM-dd")}' and t1.day<='{end.ToString("yyyy-MM-dd")}' ";
if (!string.IsNullOrEmpty(suppliername))
{
sqlwhere += " and t1.suppliername=@suppliername";
sqlparam.Add("suppliername", suppliername);
}
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.QueryFirstOrDefault<dc_daily_logistics_supplier_transaction>(sql+sqlwhere);
//获取满足条件的供应商列表
sql = "select suppliername from dc_daily_logistics_supplier_transaction t1 ";
var listsupplier = cn.Query<string>(sql + sqlwhere + " group by suppliername");
//获取期初
sql = $@"select sum(t1.amount_end) as amount_end from dc_daily_logistics_supplier_transaction t1 where t1.suppliername in ('{string.Join("','",listsupplier)}') and t1.id in (
select max(id) as id from dc_daily_logistics_supplier_transaction where day<'{start.ToString("yyyy-MM-dd")}' group by suppliername)";
var objStart = cn.QueryFirstOrDefault<dc_daily_logistics_supplier_transaction>(sql);
if (obj != null && objStart != null)
{
obj.amount_start = objStart.amount_end;
}
//获取期末
sql = $@"select sum(t1.amount_end) as amount_end from dc_daily_logistics_supplier_transaction t1 where t1.suppliername in ('{string.Join("','", listsupplier)}') and t1.id in (
select max(id) as id from dc_daily_logistics_supplier_transaction where day>='{start.ToString("yyyy-MM-dd")}' and day<='{end.ToString("yyyy-MM-dd")}' group by suppliername)";
var objEnd = cn.QueryFirstOrDefault<dc_daily_logistics_supplier_transaction>(sql);
if (obj != null && objEnd != null)
{
obj.amount_end = objEnd.amount_end;
}
return obj;
}
}
}
}
...@@ -5,6 +5,7 @@ using System.Threading.Tasks; ...@@ -5,6 +5,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Bailun.DC.Models; using Bailun.DC.Models;
using Bailun.ServiceFabric.Authorize; using Bailun.ServiceFabric.Authorize;
using Newtonsoft.Json;
namespace Bailun.DC.Web.Areas.Reports.Controllers namespace Bailun.DC.Web.Areas.Reports.Controllers
{ {
...@@ -25,12 +26,48 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers ...@@ -25,12 +26,48 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
return View(); return View();
} }
/// <summary>
/// 物流供应商往来统计报表
/// </summary>
/// <param name="request">分页信息</param>
/// <param name="start">开始时间</param>
/// <param name="end">结束时间</param>
/// <param name="suppliername">供应商名称</param>
/// <returns></returns>
[BailunAuthentication(LoginMode.Enforce)] [BailunAuthentication(LoginMode.Enforce)]
public string SupplierTrancationReportJson(BtTableParameter request,DateTime? start,DateTime? end,string suppliername) public string SupplierTrancationReportJson(BtTableParameter request,DateTime start,DateTime end,string suppliername)
{ {
var total = 0;
var obj = new Services.LogisticsServices().ListSupplierTransaction(request, start, end, suppliername,ref total);
var objCount = new Services.LogisticsServices().ListSupplierTransactionCount(start, end, suppliername);
return ""; var list = obj.Select(a => new {
str_day = (start==end?start.ToString("yyyy-MM-dd"):start.ToString("yyyy-MM-dd")+"至"+end.ToString("yyyy-MM-dd")),
amount_start = a.amount_start.ToString("N2"),
amount_happen = a.amount_happen.ToString("N2"),
amount_pay = a.amount_pay.ToString("N2"),
amount_receipt = a.amount_receipt.ToString("N2"),
amount_other = a.amount_other.ToString("N2"),
amount_end = a.amount_end.ToString("N2"),
a.suppliername,
});
return JsonConvert.SerializeObject(new
{
total = total,
rows = list,
count_row = new
{
str_day = "合计",
amount_start = objCount.amount_start.ToString("N2"),
amount_happen = objCount.amount_happen.ToString("N2"),
amount_pay = objCount.amount_pay.ToString("N2"),
amount_receipt = objCount.amount_receipt.ToString("N2"),
amount_other = objCount.amount_other.ToString("N2"),
amount_end = objCount.amount_end.ToString("N2"),
}
});
} }
} }
} }
\ 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>
<input id="start" name="start" type="text" class="form-control" style="width:130px;" value="@(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"))" />
<span>至</span>
<input id="end" name="end" type="text" class="form-control" style="width:130px;" value="@(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"))" />
</div>
<div class="form-group">
<label>&nbsp;</label>
<select id="suppliername" name="suppliername" class="form-control" style="width:160px">
<option value="">请选择物流供应商</option>
</select>
</div>
<div class="form-group">
<label>&nbsp;</label>
<button type="button" class="btn btn-success" onclick="list();">搜索</button>
@*<button type="button" class="btn btn-primary" onclick="exportFile();">导出</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 type="text/javascript">
var tb;
$(document).ready(function () {
laydate.render({ elem: '#start' });
laydate.render({ elem: '#end' });
var height = document.body.clientHeight;
$("#roletable").attr("data-height", (height - 170));
list();
})
function list() {
var start = $('#start').val();
var end = $('#end').val();
if (start == '') {
alert('请选择开始日期');
return false;
}
if (end == '') {
alert('请选择结束日期');
return false;
}
var columns = [
{ field: 'suppliername', title: '供应商名称', width: '180' },
{ field: 'str_day', title: '日期', width: '110', iscount: true },
{ field: 'amount_start', title: '期初金额', width: '110', iscount: true },
{ field: 'amount_happen', title: '发生额', width: '110', iscount: true },
{ field: 'amount_pay', title: '付款额', width: '110', iscount: true },
{ field: 'amount_receipt', title: '收款额', width: '110', iscount: true },
{ field: 'amount_other', title: '调整金额', width: '110', iscount: true },
{ field: 'amount_end', title: '期末金额', width: '120', iscount: true }
];
var url = '@Url.Content("~/Reports/Logistics/SupplierTrancationReportJson")' + '?start=' + start + '&end=' + end;
if (tb == undefined) {
tb = OnlyTable("roletable", columns, url, "", {
showfooter: true, loadsuccess: function (d) {
//替换汇总行的相关列值
var tr = $('.fixed-table-footer').find('tr');
for (var c in columns) {
var key = columns[c].field;
if (columns[c].iscount) {
for (var v in d.count_row) {
if (key == v) {
tr.find('td').eq(c).children('div').first().html(d.count_row[v]);
break;
}
}
}
}
}
});
}
else {
tb.bootstrapTable('refresh', { url: url });
}
}
function exportFile() {
var start = $('#start').val();
var end = $('#end').val();
if (start == '') {
alert('请选择开始日期');
return false;
}
if (end == '') {
alert('请选择结束日期');
return false;
}
window.open('@Url.Content("~/Reports/Finance/ExportFirstSupplierPay?start=")' + start + '&end=' + end, '_blank');
}
</script>
}
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
<Folder Include="Areas\Logistics\Models\" /> <Folder Include="Areas\Logistics\Models\" />
<Folder Include="Areas\Reports\Data\" /> <Folder Include="Areas\Reports\Data\" />
<Folder Include="Areas\Reports\Models\" /> <Folder Include="Areas\Reports\Models\" />
<Folder Include="Areas\Reports\Views\Logistics\" />
<Folder Include="Areas\Users\Data\" /> <Folder Include="Areas\Users\Data\" />
<Folder Include="Areas\Users\Models\" /> <Folder Include="Areas\Users\Models\" />
</ItemGroup> </ItemGroup>
......
...@@ -58,7 +58,7 @@ namespace Bailun.DC.Web.Controllers ...@@ -58,7 +58,7 @@ namespace Bailun.DC.Web.Controllers
public ActionResult Main() public ActionResult Main()
{ {
#if DEBUG #if DEBUG
var cookie = "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjFhZTgzOGQ0NTY5NjFiMjlkZDA2M2VmZWZmNTEwZjMyIiwidHlwIjoiSldUIn0.eyJuYmYiOjE1OTA1NTA0MDEsImV4cCI6MTU5MDU4NjQwMSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAxIiwiYXVkIjpbImh0dHA6Ly9sb2NhbGhvc3Q6NTAwMS9yZXNvdXJjZXMiLCJiYWlsdW5BcGkiXSwiY2xpZW50X2lkIjoiYmFpbHVuQ2xpZW50Iiwic3ViIjoi5YWz5oyv5bGxIiwiYXV0aF90aW1lIjoxNTkwNTUwNDAxLCJpZHAiOiJsb2NhbCIsIlVzZXJJZCI6IjIzNDYiLCJzdWNlc3NzIjoidHJ1ZSIsIkNvbXBhbnkiOiJ7XCJJZFwiOjEsXCJDb21wYW55Q29kZVwiOlwiYmFpbHVuXCIsXCJDb21wYW55TmFtZVwiOlwi5bm_5bee55m-5Lym5L6b5bqU6ZO-5pyJ6ZmQ5YWs5Y-4XCJ9IiwiQWxsQ29tcGFueSI6IkZhbHNlIiwiVXNlckNvZGVOZXciOiJCTDExNjkiLCJVc2VyQ29kZSI6IkJMMTE3MCIsIk9hVXNlcklkIjoiMjM0NiIsInJvbGVzIjoiW3tcIklkXCI6MSxcIlJvbGVDb2RlXCI6XCJJVFwiLFwiUm9sZU5hbWVcIjpcIuezu-e7n-euoeeQhuWRmFwifSx7XCJJZFwiOjI4LFwiUm9sZUNvZGVcIjpcInBwc19lZGl0b3JcIixcIlJvbGVOYW1lXCI6XCLkuqflk4HotYTmlpnlkZhcIn0se1wiSWRcIjozNjgsXCJSb2xlQ29kZVwiOlwib21zX2FkbWluXCIsXCJSb2xlTmFtZVwiOlwib21zX-euoeeQhuWRmFwifSx7XCJJZFwiOjM3MCxcIlJvbGVDb2RlXCI6XCJvbXNfbm9ybWFsXCIsXCJSb2xlTmFtZVwiOlwib21z5pmu6YCa5Lq65ZGYXCJ9LHtcIklkXCI6NTUyLFwiUm9sZUNvZGVcIjpcIkJJX1N1cHBsaWVyX1RyYW5jYXRpb25cIixcIlJvbGVOYW1lXCI6XCLkvpvlupTllYblvoDmnaVcIn0se1wiSWRcIjo1NzAsXCJSb2xlQ29kZVwiOlwiY2FzaGllcl9uZXdcIixcIlJvbGVOYW1lXCI6XCLotKLliqHnrqHnkIbns7vnu5_op5LoibJcIn0se1wiSWRcIjo1NzEsXCJSb2xlQ29kZVwiOlwiY3dfYnNpY3NcIixcIlJvbGVOYW1lXCI6XCLotKLliqHln7rnoYDmnYPpmZBcIn0se1wiSWRcIjo1NzIsXCJSb2xlQ29kZVwiOlwiY3dfYWRtaW4xXCIsXCJSb2xlTmFtZVwiOlwi6LSi5Yqh566h55CG5LiA57qn5p2D6ZmQXCJ9LHtcIklkXCI6NTgwLFwiUm9sZUNvZGVcIjpcImN3X3Rlc3RcIixcIlJvbGVOYW1lXCI6XCLotKLliqHmtYvor5VcIn0se1wiSWRcIjo3MTMsXCJSb2xlQ29kZVwiOlwiZmVlX29yZGluYXJ5XCIsXCJSb2xlTmFtZVwiOlwi6LS555So57O757ufLeaZrumAmuS6uuWRmFwifV0iLCJEZXBhcnRtZW50Ijoie1wiRGVwYXJ0bWVudElkXCI6MjU4LFwiTmFtZVwiOlwi5pWw5o2u5Lit5b-DXCIsXCJDb2RlXCI6XCJcIn0iLCJzY29wZSI6WyJvcGVuaWQiLCJwcm9maWxlIiwiYmFpbHVuQXBpIl0sImFtciI6WyJjdXN0b20iXX0.ytrkWeY4j3Mz8IQjllKqiTwjiWEZR8O8CummWBO3JxnLPsqcj66loS2rGqBbgDKbZpPRzH241oMrQbY10sH0mha-3ABPjn_tlbi8xEHBSIgUELkMruOY-HE0NmAZo-DnDZBtNwtBQAH00yIKusBc6b295y8fAD6eMXKl2c-KzTJnZCzkqr0oR3f8XDZjaDWnBt563rF0Y70SB4zj7UoMTcwzSODYNq74UUAjFQTEJebxnPRx12gBqeBUtaoMUUgRG8JTxDoZe9spsr4MSXUILo1-BdXMbGsIfiEPjy_USMCyjUIhLsMxe3ReNh6ItEk4MLZWQ-r1hXWG6531DTiZyg"; var cookie = "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjgwODExM2E5YjNkOWFjNTg3ZjUyYjUzMWRhY2E3M2FjIiwidHlwIjoiSldUIn0.eyJuYmYiOjE1OTEzNDAzMzEsImV4cCI6MTU5MTM3NjMzMSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAxIiwiYXVkIjpbImh0dHA6Ly9sb2NhbGhvc3Q6NTAwMS9yZXNvdXJjZXMiLCJiYWlsdW5BcGkiXSwiY2xpZW50X2lkIjoiYmFpbHVuQ2xpZW50Iiwic3ViIjoi5YWz5oyv5bGxIiwiYXV0aF90aW1lIjoxNTkxMzQwMzMxLCJpZHAiOiJsb2NhbCIsIlVzZXJJZCI6IjIzNDYiLCJzdWNlc3NzIjoidHJ1ZSIsIkNvbXBhbnkiOiJ7XCJJZFwiOjEsXCJDb21wYW55Q29kZVwiOlwiYmFpbHVuXCIsXCJDb21wYW55TmFtZVwiOlwi5bm_5bee55m-5Lym5L6b5bqU6ZO-5pyJ6ZmQ5YWs5Y-4XCJ9IiwiQWxsQ29tcGFueSI6IkZhbHNlIiwiVXNlckNvZGVOZXciOiJCTDExNjkiLCJVc2VyQ29kZSI6IkJMMTE3MCIsIk9hVXNlcklkIjoiMjM0NiIsInJvbGVzIjoiW3tcIklkXCI6MSxcIlJvbGVDb2RlXCI6XCJJVFwiLFwiUm9sZU5hbWVcIjpcIuezu-e7n-euoeeQhuWRmFwifSx7XCJJZFwiOjI4LFwiUm9sZUNvZGVcIjpcInBwc19lZGl0b3JcIixcIlJvbGVOYW1lXCI6XCLkuqflk4HotYTmlpnlkZhcIn0se1wiSWRcIjozNjgsXCJSb2xlQ29kZVwiOlwib21zX2FkbWluXCIsXCJSb2xlTmFtZVwiOlwib21zX-euoeeQhuWRmFwifSx7XCJJZFwiOjM3MCxcIlJvbGVDb2RlXCI6XCJvbXNfbm9ybWFsXCIsXCJSb2xlTmFtZVwiOlwib21z5pmu6YCa5Lq65ZGYXCJ9LHtcIklkXCI6NTUyLFwiUm9sZUNvZGVcIjpcIkJJX1N1cHBsaWVyX1RyYW5jYXRpb25cIixcIlJvbGVOYW1lXCI6XCLkvpvlupTllYblvoDmnaVcIn0se1wiSWRcIjo1NzAsXCJSb2xlQ29kZVwiOlwiY2FzaGllcl9uZXdcIixcIlJvbGVOYW1lXCI6XCLotKLliqHnrqHnkIbns7vnu5_op5LoibJcIn0se1wiSWRcIjo1NzEsXCJSb2xlQ29kZVwiOlwiY3dfYnNpY3NcIixcIlJvbGVOYW1lXCI6XCLotKLliqHln7rnoYDmnYPpmZBcIn0se1wiSWRcIjo1NzIsXCJSb2xlQ29kZVwiOlwiY3dfYWRtaW4xXCIsXCJSb2xlTmFtZVwiOlwi6LSi5Yqh566h55CG5LiA57qn5p2D6ZmQXCJ9LHtcIklkXCI6NTgwLFwiUm9sZUNvZGVcIjpcImN3X3Rlc3RcIixcIlJvbGVOYW1lXCI6XCLotKLliqHmtYvor5VcIn0se1wiSWRcIjo3MTMsXCJSb2xlQ29kZVwiOlwiZmVlX29yZGluYXJ5XCIsXCJSb2xlTmFtZVwiOlwi6LS555So57O757ufLeaZrumAmuS6uuWRmFwifV0iLCJEZXBhcnRtZW50Ijoie1wiRGVwYXJ0bWVudElkXCI6MjU4LFwiTmFtZVwiOlwi5pWw5o2u5Lit5b-DXCIsXCJDb2RlXCI6XCJcIn0iLCJzY29wZSI6WyJvcGVuaWQiLCJwcm9maWxlIiwiYmFpbHVuQXBpIl0sImFtciI6WyJjdXN0b20iXX0.pSjqtDDCC3usyPkLD_nG5UT8NBd5_rP92OSyeZCVDuL2E_1ev3NHPoY_5Lwt3FqF8dP1_Ow_vnm-knLH4daXnJyBQexfbQw3JKQGMe1aOC-GavOei96t9eKwFBp1CyQV7prG8xN89OLB-49Q39zhaB7Fgo7zTUrWVs6PVDKvJJU0h1-14xDlnpom6MU8WtqQYdCRQ_lwPVeTJVjS3Vr1GpLb0_RE9_8QxDGleYVCbt7mf3kp3CiWQ4K_PqxU0MvpSa7bCNv6eyNEbLpiCcj4X0ZEFKMDn8FuwYdHXcLv0bk-Y3RCjwBpqsJ1i5BO0Drv6SdD0yZECqD-ZiEmNzU0qA";
#else #else
//var user = Common.HttpHelper.NetHelper.Request("http://sso.bailuntec.com/GetUserResource"); //var user = Common.HttpHelper.NetHelper.Request("http://sso.bailuntec.com/GetUserResource");
var cookie = HttpContext.Request.Cookies["BailunToken"]; var cookie = HttpContext.Request.Cookies["BailunToken"];
......
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