Commit f78b1d4a by guanzhenshan

完成月销售利润统计报表明细导入和查看列表功能

parent ecb8a3f7
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models
{
/// <summary>
///
/// </summary>
public class dc_month_sale_profit_details
{
/// <summary>
///
/// </summary>
public int id { get; set; }
/// <summary>
/// 列名
/// </summary>
public string colval { get; set; }
/// <summary>
/// 列描述
/// </summary>
public string colname { get; set; }
/// <summary>
/// 月份
/// </summary>
public string month { get; set; }
/// <summary>
/// 类型
/// </summary>
public string type { get; set; }
/// <summary>
/// 金额
/// </summary>
public decimal amount { get; set; }
/// <summary>
/// 备注1
/// </summary>
public string note_one { get; set; }
/// <summary>
/// 备注2
/// </summary>
public string note_two { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime createtime { get; set; }
/// <summary>
/// 创建人id
/// </summary>
public int createuserid { get; set; }
/// <summary>
/// 创建人名称
/// </summary>
public string createusername { get; set; }
/// <summary>
/// 最后更新时间
/// </summary>
public DateTime lastupdatetime { get; set; }
/// <summary>
/// 最后更新人id
/// </summary>
public int lastupdateuserid { get; set; }
/// <summary>
/// 最后更新人名称
/// </summary>
public string lastupdateusername { get; set; }
/// <summary>
/// 是否已删除 1:已删除,0:未删除
/// </summary>
public int delstatus { get; set; }
}
}
......@@ -4299,9 +4299,167 @@ group by currency";
return ex.Message;
}
}
}
/// <summary>
/// 获取月销售利润明细
/// </summary>
/// <param name="parameter">分页信息</param>
/// <param name="month">月份</param>
/// <param name="colval">列名</param>
/// <param name="total">符合条件的记录数</param>
/// <returns></returns>
public List<dc_month_sale_profit_details> ListMonthSaleProfitDetail(BtTableParameter parameter, string month, string colval, ref int total)
{
var sql = "select * from dc_month_sale_profit_details where delstatus=0 ";
var sqlparam = new DynamicParameters();
if (!string.IsNullOrEmpty(month))
{
sql += " and month=@month";
sqlparam.Add("month", month);
}
if (!string.IsNullOrEmpty(colval))
{
sql += " and colval=@val";
sqlparam.Add("val", colval);
}
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Page<dc_month_sale_profit_details>(parameter.pageIndex, parameter.limit, sql, ref total, sqlparam);
return obj.ToList();
}
}
/// <summary>
/// 获取月销售利润明细 总计
/// </summary>
/// <param name="month">月份</param>
/// <param name="colval">列名</param>
/// <returns></returns>
public dc_month_sale_profit_details ListMonthSaleProfitDetailCount(string month, string colval)
{
var sql = "select sum(amount) amount from dc_month_sale_profit_details where delstatus=0 ";
var sqlparam = new DynamicParameters();
if (!string.IsNullOrEmpty(month))
{
sql += " and month=@month";
sqlparam.Add("month", month);
}
if (!string.IsNullOrEmpty(colval))
{
sql += " and colval=@val";
sqlparam.Add("val", colval);
}
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.QueryFirstOrDefault<dc_month_sale_profit_details>(sql,sqlparam);
return obj;
}
}
/// <summary>
/// 保存月销售利润明细信息
/// </summary>
/// <param name="list"></param>
/// <param name="uid">当前用户id</param>
/// <param name="username">当前用户名称</param>
/// <returns></returns>
public string SaveMonthSaleProfitDetail(List<dc_month_sale_profit_details> list, int uid, string username)
{
if (list.Count <= 0)
{
return "没有可保存的记录";
}
try
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
foreach (var item in list)
{
item.createtime = DateTime.Now;
item.createuserid = uid;
item.createusername = username;
item.lastupdatetime = DateTime.Now;
item.lastupdateuserid = uid;
item.lastupdateusername = username;
item.delstatus = 0;
cn.Insert<dc_month_sale_profit_details>(item);
}
}
return "";
}
catch (Exception ex)
{
return "出现异常,异常信息:"+ex.Message;
}
}
/// <summary>
/// 删除明细记录
/// </summary>
/// <param name="id">月销售利润明细id</param>
/// <param name="uid">当前用户id</param>
/// <param name="username">当前用户名称</param>
/// <returns></returns>
public string DelMonthSaleProfitDetail(int id,int uid,string username)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.QueryFirstOrDefault<dc_month_sale_profit_details>("select * from dc_month_sale_profit_details where delstatus=0 and id=" + id);
if (obj == null)
{
return "删除失败,找不到该记录。";
}
var result = cn.Execute("update dc_month_sale_profit_details set delstatus=1,lastupdatetime='"+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+ "',lastupdateuserid="+uid+ ",lastupdateusername='"+username+"' where id="+id);
if (result > 0)
{
return "";
}
else
{
return "删除失败,请重试!";
}
}
}
#endregion
......
......@@ -5871,6 +5871,171 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
});
}
/// <summary>
/// 月销售利润明细
/// </summary>
/// <returns></returns>
public ActionResult MonthSaleProfitDetails(string month,string col,string colname)
{
ViewBag.month = month;
ViewBag.col = col;
ViewBag.colname = colname;
return View();
}
/// <summary>
/// 月销售利润明细
/// </summary>
/// <param name="parameter">分页信息</param>
/// <param name="month">月份</param>
/// <param name="col">列名</param>
/// <returns></returns>
[BailunAuthentication(LoginMode.Enforce)]
public string ListMonthSaleProfitDetailJson(BtTableParameter parameter, string month, string col)
{
var user = HttpContextHelper.Current?.User;
var total = 0;
var _service = new Services.FinanceReportServices();
var obj = _service.ListMonthSaleProfitDetail(parameter, month, col, ref total);
var objCount = _service.ListMonthSaleProfitDetailCount(month, col);
var list = obj.Select(a => new {
a.id,
a.month,
a.colname,
a.type,
a.amount,
a.note_one,
a.note_two,
createtime = a.createtime.ToString("yyyy-MM-dd HH:mm:ss")
});
return JsonConvert.SerializeObject(new
{
total = total,
rows = list,
count_row = new
{
type = "总计",
amount = objCount.amount.ToString("N2"),
},
userid = user!=null?user.GetUid():0,
username = user!=null?user.GetUserName():"",
});
}
/// <summary>
/// 上传月销售利润明细
/// </summary>
/// <param name="month"></param>
/// <param name="col"></param>
/// <param name="colname"></param>
/// <param name="uid"></param>
/// <param name="username"></param>
/// <returns></returns>
public JsonResult UploadMonthSaleProfitDetail(string month,string col,string colname,int uid,string username)
{
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_month_sale_profit_details>();
var service = new Services.FinanceReportServices();
for (var i = 0; i < tb.Value.Rows.Count; i++)
{
var row = tb.Value.Rows[i];
try
{
var type = row["类型"].ToString();
var amount = row["金额"].ToString();
var note_one = row["备注1"].ToString();
var note_two = row["备注2"].ToString();
list.Add(new dc_month_sale_profit_details {
type = type,
amount = decimal.Parse(amount),
note_one = note_one,
note_two = note_two,
month = month,
colval = col,
colname = colname
});
}
catch (Exception ex)
{
return Json(new
{
success = false,
msg = "导入失败,异常信息:" + ex.Message
});
}
}
if (list.Count == 0)
{
return Json(new
{
success = false,
msg = "表格没有数据。",
});
}
var result = service.SaveMonthSaleProfitDetail(list, uid,username);
return Json(new
{
success = string.IsNullOrEmpty(result),
msg = result
});
}
else
{
return Json(new
{
success = false,
msg = "请上传文件"
});
}
}
/// <summary>
/// 删除月销售利润明细
/// </summary>
/// <param name="id">明细id</param>
/// <returns></returns>
[BailunAuthentication(LoginMode.Enforce)]
[HttpPost]
public JsonResult DelMonthSaleProfitDetail(int id)
{
var user = HttpContextHelper.Current?.User;
var result = new Services.FinanceReportServices().DelMonthSaleProfitDetail(id, user != null ? user.GetUid() : 0, user != null ? user.GetUserName() : "");
return Json(new {
success = string.IsNullOrEmpty(result),
msg = result
});
}
#endregion
}
......
......@@ -147,7 +147,7 @@
str_template = str_template.replace('{'+result.head[h].item1 + '_desc}', "说明:无");
}
s += '<td>' + str_template.replace('{' + result.head[h].item1 + '+}', col_2) + '<a style="color:#bbb;" onclick=\"EditDescription(\'' + result.head[h].item1 + '\',\'' + temps + '\',\'' + result.data[i]['month'] + '\',\'' + clearHtml(result.head[h].item2) + '\')\">修改说明</a></td>';
s += '<td>' + str_template.replace('{' + result.head[h].item1 + '+}', col_2) + '<a style="color:#bbb;" onclick=\"EditDescription(\'' + result.head[h].item1 + '\',\'' + temps + '\',\'' + result.data[i]['month'] + '\',\'' + clearHtml(result.head[h].item2) + '\')\">修改说明</a><a style="color:#bbb;" onclick=\"ShowDetail(\'' + result.head[h].item1 + '\',\'' + result.data[i]['month'] + '\',\'' + clearHtml(result.head[h].item2) + '\')\">明细</a></td>';
//合计
s += ('<td>' + result.data[i][c] + '</td>');
......@@ -227,6 +227,10 @@
})
}
function ShowDetail(col, mon, name) {
layer_show(mon + ' ' + name + "的明细", '@Url.Content("~/Reports/Finance/MonthSaleProfitDetails")' + '?month=' + mon + '&col=' + col + '&colname=' + name, '95%', '95%');
}
function clearHtml(s) {
// 去除 富文本格式
s = s.replace(/(\n)/g, "");
......

@{
ViewData["Title"] = ViewBag.month + "月销售利润明细";
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">
<button type="button" class="btn btn-primary" onclick="list();"><i class="fa fa-search"></i>&nbsp;查询</button>
<button id="btn_Upload" type="button" class="btn btn-success">导入</button>
<a href="~/templatefile/monthsaleprofit_template.xlsx" 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;
}
.mules {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
}
@section scripts{
<script src="~/js/webuploader-0.1.5/webuploader.min.js"></script>
<script>
var tb;
var BASE_URL = '@(Url.Content("~/js/webuploader-0.1.5/"))';
var uid = 0;
var username = '';
var isInit = 1;
$(document).ready(function (){
var height = document.body.clientHeight;
$("#roletable").attr("data-height", (height - 150));
list();
})
function list() {
var columns = [
{ field: 'month', title: '月份', width: '90' },
{ field: 'type', title: '类型', width: '130', iscount: true },
{ field: 'amount', title: '金额', width: '100', sortable: true,iscount:true},
{ field: 'note_one', title: '备注1', width: '260'},
{ field: 'note_two', title: '备注2', width: '260'},
{ field: 'createtime', title: '创建时间', width: '130'},
{
field: 'option', title: '操作', width: '100px', formatter: function (idx, data) {
var s = '<button class="btn btn-danger btn-xs" onclick="DelDetail(\'' + data.id + '\');">删除</button>';
return s;
}
}
];
var url = '@Url.Content("~/Reports/Finance/ListMonthSaleProfitDetailJson")' + '?month=@(ViewBag.month+ "&col="+ViewBag.col)';
if (tb == undefined) {
tb = OnlyTable("roletable", columns, url, "", {
showfooter: true, showCount:true, loadsuccess: function (d) {
//替换汇总行的相关列值
uid = d.userid;
username = d.username;
if (isInit == 1) {
uploadfile('btn_Upload',
'@Url.Content("~/Reports/Finance/UploadMonthSaleProfitDetail")' + '?month=@(ViewBag.month)'+ '&col=@(ViewBag.col)' + '&colname=@(ViewBag.colname)' + '&uid=' + uid + '&username=' + username,
function(result){
if(result.success)
{
alert('上传成功!');
setTimeout(function () { list();}, 1.5 * 1000);
}
else
{
alert(result.msg);
}
});
isInit = 0;
}
}
});
}
else {
tb.bootstrapTable('refresh', { url: url });
}
}
function DelDetail(id) {
if (confirm('确定要删除该记录吗?')) {
$.submit({
url: '@Url.Content("~/Reports/Finance/DelMonthSaleProfitDetail")',
type: "POST",
paramData: 'id='+id,
func: function (result) {
if (result.success) {
alert("删除成功!");
list();
}
else {
alert(result.msg);
}
}
})
}
}
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("上传出错");
});
}
</script>
}
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