Commit d1b4779f by guanzhenshan

增加调拨计划单在途

parent ce4482d7
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models.Allot
{
/// <summary>
/// 调拨计划
/// </summary>
public class dc_base_transfer_plan
{
public string transfer_plan_order_id { get; set; }
public string warehouse_code { get; set; }
public string warehouse_name { get; set; }
public string bailun_sku { get; set; }
public int count { get; set; }
public int status { get; set; }
public int deleted { get; set; }
}
}
......@@ -5,6 +5,7 @@ using Bailun.DC.Models;
using Bailun.DC.DB;
using Dapper;
using MySql.Data.MySqlClient;
using Bailun.DC.Models.Allot;
namespace Bailun.DC.Services
{
......@@ -272,5 +273,125 @@ namespace Bailun.DC.Services
}
}
/// <summary>
/// 获取调拨计划在途
/// </summary>
/// <param name="parameter">分页信息</param>
/// <param name="orderno">调拨单号</param>
/// <param name="sku">百伦sku</param>
/// <param name="warehousetype">仓库类型</param>
/// <param name="warehousecode">仓库名称</param>
/// <param name="total">符合条件的记录数</param>
/// <returns></returns>
public List<dc_base_transfer_plan> ListAllotPlanOnWay(BtTableParameter parameter, string orderno, string sku, string warehousetype, string warehousecode, ref int total)
{
var sql = $@"select t1.transfer_plan_order_id,t1.warehouse_code,t2.warehouse_name,t1.bailun_sku,t1.count from dc_base_transfer_plan t1
join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code
where t1.`status`=1 and t1.deleted=0";
var sqlparam = new DynamicParameters();
if (!string.IsNullOrEmpty(orderno))
{
sql += " and t1.transfer_plan_order_id=@orderno";
sqlparam.Add("orderno", orderno);
}
if (!string.IsNullOrEmpty(sku))
{
sql += " and t1.bailun_sku=@sku";
sqlparam.Add("sku", sku);
}
if (!string.IsNullOrEmpty(warehousetype))
{
sql += " and t2.hq_type=@warehousetype";
sqlparam.Add("warehousetype", warehousetype);
}
if (!string.IsNullOrEmpty(warehousecode))
{
sql += " and t1.warehouse_code=@warehousecode";
sqlparam.Add("warehousecode", warehousecode);
}
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
if (parameter.limit == 0)
{
var obj = cn.Query<dc_base_transfer_plan>(sql, sqlparam);
return obj.AsList();
}
else
{
var obj = cn.Page<dc_base_transfer_plan>(parameter.pageIndex, parameter.limit, sql, ref total, sqlparam);
return obj.AsList();
}
}
}
/// <summary>
/// 获取调拨计划在途 合计
/// </summary>
/// <param name="orderno">调拨单号</param>
/// <param name="sku">百伦sku</param>
/// <param name="warehousetype">仓库类型</param>
/// <param name="warehousecode">仓库名称</param>
/// <returns></returns>
public dc_base_transfer_plan ListAllotPlanOnWayCount(string orderno, string sku, string warehousetype, string warehousecode)
{
var sql = $@"select sum(t1.count) count from dc_base_transfer_plan t1
join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code
where t1.`status`=1 and t1.deleted=0";
var sqlparam = new DynamicParameters();
if (!string.IsNullOrEmpty(orderno))
{
sql += " and t1.transfer_plan_order_id=@orderno";
sqlparam.Add("orderno", orderno);
}
if (!string.IsNullOrEmpty(sku))
{
sql += " and t1.bailun_sku=@sku";
sqlparam.Add("sku", sku);
}
if (!string.IsNullOrEmpty(warehousetype))
{
sql += " and t2.hq_type=@warehousetype";
sqlparam.Add("warehousetype", warehousetype);
}
if (!string.IsNullOrEmpty(warehousecode))
{
sql += " and t1.warehouse_code=@warehousecode";
sqlparam.Add("warehousecode", warehousecode);
}
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.QueryFirstOrDefault<dc_base_transfer_plan>(sql,sqlparam);
return obj;
}
}
}
}
......@@ -121,5 +121,80 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
ms.Position = 0;
return File(ms, "text/csv", filename + ".csv");
}
/// <summary>
/// 调拨计划在途
/// </summary>
/// <returns></returns>
public ActionResult AllotPlan()
{
return View();
}
[BailunAuthentication(LoginMode.Enforce)]
public string AllotPlanJson(BtTableParameter parameter, string orderno, string sku, string warehousetype, string warehousecode)
{
var total = 0;
var companyid = HttpContextHelper.Current?.User.GetCompanyId().ToInt32();
var _service = new Services.AllotServices();
var obj = _service.ListAllotPlanOnWay(parameter, orderno, sku, warehousetype, warehousecode, ref total);
var objCount = _service.ListAllotPlanOnWayCount(orderno, sku, warehousetype, warehousecode);
return JsonConvert.SerializeObject(new
{
total = total,
rows = obj,
companyid = companyid,
isexport = Services.UserAuthorityServices.checkUserExportAuthority("ExportAllotPlanOnWay", HttpContextHelper.Current.User.GetUserName()),
count_row = new
{
bailun_sku = "总计",
objCount.count
}
});
}
/// <summary>
/// 导出调拨计划在途明细
/// </summary>
/// <param name="orderno">调拨计划单号</param>
/// <param name="sku">sku</param>
/// <param name="warehousetype">目的仓库类型</param>
/// <param name="warehousecode">目的仓库编码</param>
/// <returns></returns>
public ActionResult ExportAllotPlan(string orderno, string sku, string warehousetype, string warehousecode)
{
var total = 0;
var _service = new Services.AllotServices();
var obj = _service.ListAllotPlanOnWay(new BtTableParameter { limit = 0, offset = 1 }, orderno, sku, warehousetype, warehousecode, ref total);
var colNames = new List<string> { "调拨计划单号", "仓库编码", "仓库名称", "sku", "数量"};
var list = new List<string>();
foreach (var item in obj)
{
list.Add(item.transfer_plan_order_id + "|" + item.warehouse_code + "|" + item.warehouse_name + "|" + item.bailun_sku + "|" + item.count);
}
var guid = Guid.NewGuid().ToString();
var filename = "调拨计划在途明细 " + DateTime.Now.ToString("yyyyMMddHHmmss");
var filepath = _hostingEnvironment.WebRootPath + "\\Files\\Report\\" + DateTime.Now.ToString("yyyy-MM-dd") + "\\";
ToCSV(list, colNames, guid, filepath);
var ms = new System.IO.MemoryStream();
using (var f = new System.IO.FileStream(filepath + guid + ".csv", System.IO.FileMode.Open))
{
f.CopyTo(ms);
}
ms.Position = 0;
return File(ms, "text/csv", filename + ".csv");
}
}
}
\ No newline at end of file

@{
ViewData["Title"] = "调拨计划单在途";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
ViewBag.Nav = new string[] { "订单", "调拨计划单在途" };
}
<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="warehousetype" name="warehousetype" class="form-control">
<option value="">选择仓库类型</option>
<option value="国内仓">国内仓</option>
<option value="海外仓">海外仓</option>
<option value="FBA仓">FBA仓</option>
<option value="第三方仓库">第三方仓库</option>
</select>
</div>
<div class="form-group">
<label>目的仓库:</label>
<select id="warehousecode" name="warehousecode" class="form-control">
<option value="">选择仓库</option>
</select>
</div>
<div class="form-group">
<label>&nbsp;</label>
<input id="orderno" name="orderno" class="form-control" style="width:130px;" placeholder="调拨计划单号" />
</div>
<div class="form-group">
<label>&nbsp;</label>
<input id="sku" name="sku" class="form-control" style="width:130px;" placeholder="sku编码" />
</div>
<div class="form-group">
<label>&nbsp;</label>
<button type="button" class="btn btn-primary" onclick="list();"><i class="fa fa-search"></i>&nbsp;查询</button>
<button type="button" class="btn btn-success" onclick="exportlist();">导出</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();
$('#warehousetype').change(function () {
listwarehouse();
})
})
function list() {
var columns = [
{ field: 'transfer_plan_order_id', title: '计划单号', width: '150'},
{ field: 'warehouse_name', title: '仓库名称', width: '130', sortable: false },
{ field: 'bailun_sku', title: 'sku', width: '120', iscount: true },
{ field: 'count', title: '计划数量', width: '120', iscount: true }
];
var url = '@Url.Content("~/Reports/OnWay/AllotPlanJson")' + '?' + $("#toolbar").serialize();
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 listwarehouse() {
var type = $('#warehousetype').val();
$.submit({
url: '@Url.Content("~/Home/ListWarehouseFromStockAndSales")',
paramData: 'warehousetype=' + type,
type:'POST',
func: function (result) {
if (result != null && result != undefined) {
$('#warehousecode').html('<option value="">选择仓库</option>');
for (var i = 0; i < result.length; i++) {
$('#warehousecode').append('<option value="' + result[i].warehouse_code + '">' + result[i].warehouse_name + '</option>');
}
}
}
})
}
function exportlist() {
window.open('@Url.Content("~/Reports/OnWay/ExportAllotPlan?")' + $("#toolbar").serialize(), '_blank');
}
</script>
}
......@@ -79,10 +79,9 @@
var columns = [
{ field: 'code', title: '调拨单号', width: '160', iscount: true },
{ field: 'schedulecode', title: '计划单号', width: '150'},
{ field: 'stateid', title: '调拨状态', width: '100'},
{ field: 'sourcewarename', title: '起始仓库', width: '130', iscount: true },
{ field: 'targetwarename', title: '目的仓库', width: '130', sortable: false },
{ field: 'sku', title: 'sku', width: '120', sortable: false },
{ field: 'sku', title: 'sku', width: '120', iscount: true },
{ field: 'deliverycount', title: '调拨数量', width: '120', iscount: true },
{ field: 'storagecount', title: '已入库数量', width: '120', iscount: true},
{ field: 'onwaycount', title: '在途数量', width: '120', iscount: true },
......
......@@ -77,7 +77,7 @@ namespace Bailun.DC.Web.Controllers
public ActionResult Main()
{
#if DEBUG
var cookie = "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImQ3ZjgyYjYyN2E1OWY4YWJkMWU2OTI5MTlkNzc1NmNkIiwidHlwIjoiSldUIn0.eyJuYmYiOjE1OTUzMjU1NzksImV4cCI6MTU5NTM2MTU3OSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAxIiwiYXVkIjpbImh0dHA6Ly9sb2NhbGhvc3Q6NTAwMS9yZXNvdXJjZXMiLCJiYWlsdW5BcGkiXSwiY2xpZW50X2lkIjoiYmFpbHVuQ2xpZW50Iiwic3ViIjoi5YWz5oyv5bGxIiwiYXV0aF90aW1lIjoxNTk1MzI1NTc5LCJpZHAiOiJsb2NhbCIsIlVzZXJJZCI6IjIzNDYiLCJzdWNlc3NzIjoidHJ1ZSIsIkNvbXBhbnkiOiJ7XCJJZFwiOjEsXCJDb21wYW55Q29kZVwiOlwiYmFpbHVuXCIsXCJDb21wYW55TmFtZVwiOlwi5bm_5bee55m-5Lym5L6b5bqU6ZO-5pyJ6ZmQ5YWs5Y-4XCJ9IiwiQWxsQ29tcGFueSI6IkZhbHNlIiwiVXNlckNvZGVOZXciOiJCTDExNjkiLCJVc2VyQ29kZSI6IkJMMTE3MCIsIk9hVXNlcklkIjoiMjM0NiIsInJvbGVzIjoiW3tcIklkXCI6MSxcIlJvbGVDb2RlXCI6XCJJVFwiLFwiUm9sZU5hbWVcIjpcIuezu-e7n-euoeeQhuWRmFwifSx7XCJJZFwiOjI4LFwiUm9sZUNvZGVcIjpcInBwc19lZGl0b3JcIixcIlJvbGVOYW1lXCI6XCLkuqflk4HotYTmlpnlkZhcIn0se1wiSWRcIjozNjgsXCJSb2xlQ29kZVwiOlwib21zX2FkbWluXCIsXCJSb2xlTmFtZVwiOlwib21zX-euoeeQhuWRmFwifSx7XCJJZFwiOjM3MCxcIlJvbGVDb2RlXCI6XCJvbXNfbm9ybWFsXCIsXCJSb2xlTmFtZVwiOlwib21z5pmu6YCa5Lq65ZGYXCJ9LHtcIklkXCI6NTUyLFwiUm9sZUNvZGVcIjpcIkJJX1N1cHBsaWVyX1RyYW5jYXRpb25cIixcIlJvbGVOYW1lXCI6XCLkvpvlupTllYblvoDmnaVcIn0se1wiSWRcIjo1NzAsXCJSb2xlQ29kZVwiOlwiY2FzaGllcl9uZXdcIixcIlJvbGVOYW1lXCI6XCLotKLliqHnrqHnkIbns7vnu5_op5LoibJcIn0se1wiSWRcIjo1NzEsXCJSb2xlQ29kZVwiOlwiY3dfYnNpY3NcIixcIlJvbGVOYW1lXCI6XCLotKLliqHln7rnoYDmnYPpmZBcIn0se1wiSWRcIjo1NzIsXCJSb2xlQ29kZVwiOlwiY3dfYWRtaW4xXCIsXCJSb2xlTmFtZVwiOlwi6LSi5Yqh566h55CG5LiA57qn5p2D6ZmQXCJ9LHtcIklkXCI6NTgwLFwiUm9sZUNvZGVcIjpcImN3X3Rlc3RcIixcIlJvbGVOYW1lXCI6XCLotKLliqHmtYvor5VcIn0se1wiSWRcIjo3MTMsXCJSb2xlQ29kZVwiOlwiZmVlX29yZGluYXJ5XCIsXCJSb2xlTmFtZVwiOlwi6LS555So57O757ufLeaZrumAmuS6uuWRmFwifV0iLCJEZXBhcnRtZW50Ijoie1wiRGVwYXJ0bWVudElkXCI6MjU4LFwiTmFtZVwiOlwi5pWw5o2u5Lit5b-DXCIsXCJDb2RlXCI6XCJcIn0iLCJzY29wZSI6WyJvcGVuaWQiLCJwcm9maWxlIiwiYmFpbHVuQXBpIl0sImFtciI6WyJjdXN0b20iXX0.a-8GkTlqvfiXBHEkQiYB1_zLUXN4djcnfzzLu4bH0Qeb7pCd7dG50P9vECMl325CBHA0-U6Jxhu8pbVS2bcYubpYcyTnluLrcMLqEbAz0d5yjLxVRTLiaU1fB5T0EXM64P0JOsubAVtv5_3AeCcl6TagCU3z79MNwygzcORMYkZOvtj_FbwQhIRJSYVvGUQRnLQjIkaUomwEhclITNYbkGWRv3SLmajbxb5kTMB8KrN4ZdXLByz4Pl5iFHLbTTCZ6IJnk_SDGODfk_iivYZX9dUontkT17P21iHV7NEC5IgNDHCLqjB8Jl8wIA1DYAbixyz-2TMePioppdLZSLVOfw";
var cookie = "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImQ3ZjgyYjYyN2E1OWY4YWJkMWU2OTI5MTlkNzc1NmNkIiwidHlwIjoiSldUIn0.eyJuYmYiOjE1OTUzODIwMTQsImV4cCI6MTU5NTQxODAxNCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAxIiwiYXVkIjpbImh0dHA6Ly9sb2NhbGhvc3Q6NTAwMS9yZXNvdXJjZXMiLCJiYWlsdW5BcGkiXSwiY2xpZW50X2lkIjoiYmFpbHVuQ2xpZW50Iiwic3ViIjoi5YWz5oyv5bGxIiwiYXV0aF90aW1lIjoxNTk1MzgyMDE0LCJpZHAiOiJsb2NhbCIsIlVzZXJJZCI6IjIzNDYiLCJzdWNlc3NzIjoidHJ1ZSIsIkNvbXBhbnkiOiJ7XCJJZFwiOjEsXCJDb21wYW55Q29kZVwiOlwiYmFpbHVuXCIsXCJDb21wYW55TmFtZVwiOlwi5bm_5bee55m-5Lym5L6b5bqU6ZO-5pyJ6ZmQ5YWs5Y-4XCJ9IiwiQWxsQ29tcGFueSI6IkZhbHNlIiwiVXNlckNvZGVOZXciOiJCTDExNjkiLCJVc2VyQ29kZSI6IkJMMTE3MCIsIk9hVXNlcklkIjoiMjM0NiIsInJvbGVzIjoiW3tcIklkXCI6MSxcIlJvbGVDb2RlXCI6XCJJVFwiLFwiUm9sZU5hbWVcIjpcIuezu-e7n-euoeeQhuWRmFwifSx7XCJJZFwiOjI4LFwiUm9sZUNvZGVcIjpcInBwc19lZGl0b3JcIixcIlJvbGVOYW1lXCI6XCLkuqflk4HotYTmlpnlkZhcIn0se1wiSWRcIjozNjgsXCJSb2xlQ29kZVwiOlwib21zX2FkbWluXCIsXCJSb2xlTmFtZVwiOlwib21zX-euoeeQhuWRmFwifSx7XCJJZFwiOjM3MCxcIlJvbGVDb2RlXCI6XCJvbXNfbm9ybWFsXCIsXCJSb2xlTmFtZVwiOlwib21z5pmu6YCa5Lq65ZGYXCJ9LHtcIklkXCI6Mzg4LFwiUm9sZUNvZGVcIjpcInNhbGFyeV91c2VyXCIsXCJSb2xlTmFtZVwiOlwi5bel6LWE57O757uf55So5oi3XCJ9LHtcIklkXCI6NTUyLFwiUm9sZUNvZGVcIjpcIkJJX1N1cHBsaWVyX1RyYW5jYXRpb25cIixcIlJvbGVOYW1lXCI6XCLkvpvlupTllYblvoDmnaVcIn0se1wiSWRcIjo1NzAsXCJSb2xlQ29kZVwiOlwiY2FzaGllcl9uZXdcIixcIlJvbGVOYW1lXCI6XCLotKLliqHnrqHnkIbns7vnu5_op5LoibJcIn0se1wiSWRcIjo1NzEsXCJSb2xlQ29kZVwiOlwiY3dfYnNpY3NcIixcIlJvbGVOYW1lXCI6XCLotKLliqHln7rnoYDmnYPpmZBcIn0se1wiSWRcIjo1NzIsXCJSb2xlQ29kZVwiOlwiY3dfYWRtaW4xXCIsXCJSb2xlTmFtZVwiOlwi6LSi5Yqh566h55CG5LiA57qn5p2D6ZmQXCJ9LHtcIklkXCI6NTgwLFwiUm9sZUNvZGVcIjpcImN3X3Rlc3RcIixcIlJvbGVOYW1lXCI6XCLotKLliqHmtYvor5VcIn0se1wiSWRcIjo2MDQsXCJSb2xlQ29kZVwiOlwiQmFpbHVuX3dhZ2VzXCIsXCJSb2xlTmFtZVwiOlwi5bel6LWE57O757ufXCJ9LHtcIklkXCI6NzAxLFwiUm9sZUNvZGVcIjpcIkJhaWx1bl90b2RvSm9iXCIsXCJSb2xlTmFtZVwiOlwi5omn6KGM5Yqb57O757uf6KeS6ImyXCJ9LHtcIklkXCI6NzA0LFwiUm9sZUNvZGVcIjpcInp4bF9zeXNcIixcIlJvbGVOYW1lXCI6XCLmiafooYzliptcIn0se1wiSWRcIjo3MDYsXCJSb2xlQ29kZVwiOlwienhsX3N5c19zdGFmZlwiLFwiUm9sZU5hbWVcIjpcIuaJp-ihjOWKmy3mma7pgJrlkZjlt6VcIn0se1wiSWRcIjo3MDcsXCJSb2xlQ29kZVwiOlwiZ3otc3lzXCIsXCJSb2xlTmFtZVwiOlwi5bel6LWE57O757ufXCJ9LHtcIklkXCI6NzEwLFwiUm9sZUNvZGVcIjpcImd6LXN5cy1zdGFmZlwiLFwiUm9sZU5hbWVcIjpcIuW3pei1hOezu-e7ny3mma7pgJrlkZjlt6VcIn0se1wiSWRcIjo3MTMsXCJSb2xlQ29kZVwiOlwiZmVlX29yZGluYXJ5XCIsXCJSb2xlTmFtZVwiOlwi6LS555So57O757ufLeaZrumAmuS6uuWRmFwifV0iLCJEZXBhcnRtZW50Ijoie1wiRGVwYXJ0bWVudElkXCI6MjU4LFwiTmFtZVwiOlwi5pWw5o2u5Lit5b-DXCIsXCJDb2RlXCI6XCJcIn0iLCJzY29wZSI6WyJvcGVuaWQiLCJwcm9maWxlIiwiYmFpbHVuQXBpIl0sImFtciI6WyJjdXN0b20iXX0.RVS0JOWPGrF_6V7BARJfiITeE6JHjMFgp5LQYx5uRhtxNRJTa0qVyS9AbpV7ZdruFsTk8C3uG-8YYFa2fg8wFcgZ6-6tSZhVIKxedpOBEALSK-JFFf7Vb_H1O6oOGHZshQ1tS-196LQGWecE7EgKawzbWUkG7A0w0FQH9tF7o4IMFXF8OynmvkUMVP06UWLLg-DJj5nFrO7f0xVlTfZwqipcC-UU9YkD5Gohuyb_TKkQKbrih1_5bWIR6w2q0HH54i-MkhzaARSihzHfM0SPFkDZyVLFNXSPiZ86KH9hTQd31Albq-WR1libmGpZUVm9bOhqFqSNopPx5QUDtIb8TA";
#else
//var user = Common.HttpHelper.NetHelper.Request("http://sso.bailuntec.com/GetUserResource");
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