You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

348 lines
18 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using DSWeb.Areas.OA.Models.Wms_StockTake;
using DSWeb.Areas.CommMng.Models;
using DSWeb.TruckMng.Helper;
using Microsoft.Practices.EnterpriseLibrary.Data;
namespace DSWeb.Areas.OA.Controllers
{
/// <summary>
/// 库存综合查询
/// </summary>
public class Wms_StockTakeController : Controller
{
//
// GET: /Import/RptImportFeedetail/
public ActionResult Index()
{
return View();
}
public ActionResult Edit()
{
return View();
}
#region 按入库单
public ContentResult GetDataList(int start, int limit, string sort, string condition)
{
var dataList = GetDataList(condition,sort);
var list = dataList.Skip(start).Take(limit);
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = list.ToList() });
return new ContentResult() { Content = json };
}
private static List<Wms_StockTakemb> GetDataList(string strCondition, string sort)
{
var strSql = new StringBuilder();
strSql.Append(" select vws.*");
strSql.Append(",(select name from company where gid=vws.corpid) as COMPANYNAME");
strSql.Append(",vs.ETD,vs.mblno,vs.custno,ISBONDEDNAME=(case when vws.ISBONDED=1 then '是' else '否' end) ");//是否保税SR2017062600003
//解决综合查询结果为重复的两条的问题
//strSql.Append(" from vw_wms_stocktake as vws left join v_op_bs as vs on vs.BSNO=vws.ASSOCIATEDNO ");// left join wms w on w.gid=vws.NID
strSql.Append(" from vw_wms_stocktake as vws left join v_op_bs as vs on vs.BSNO=vws.ASSOCIATEDNO and vs.OPLB = 'WMS_IN'");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" where " + strCondition);
}
var sortstring = DatasetSort.Getsortstring(sort);
if (!string.IsNullOrEmpty(sortstring))
{
strSql.Append(" order by " + sortstring);
}
return SetData(strSql);
}
private static List<Wms_StockTakemb> SetData(StringBuilder strSql)
{
var headList = new List<Wms_StockTakemb>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
var data = new Wms_StockTakemb();
#region Set DB data to Object
data.WMSDATE = Convert.ToString(reader["WMSDATE"]);
data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERNAME"]);
data.MBLNO = Convert.ToString(reader["MBLNO"]);
data.CUSTNO = Convert.ToString(reader["CUSTNO"]);
data.WMSNO = Convert.ToString(reader["WMSNO"]);
data.STORAGENAME = Convert.ToString(reader["STORAGENAME"]);
data.GOODSNAME = Convert.ToString(reader["GOODSNAME"]);
data.GOODSMODEL = Convert.ToString(reader["GOODSMODEL"]);
data.hj_GOODSRKSL = Convert.ToString(reader["hj_GOODSRKSL"]);
data.hj_GOODSPFSL_OUT = Convert.ToString(reader["hj_GOODSPFSL_OUT"]);
data.hj_GOODSSTOCK = Convert.ToString(reader["hj_GOODSSTOCK"]);
data.hj_GOODSPACK = Convert.ToString(reader["hj_GOODSPACK"]);
data.hj_GOODSPACKPFSL = Convert.ToString(reader["hj_GOODSPACKPFSL"]);
data.hj_GOODSPACKSTOCK = Convert.ToString(reader["hj_GOODSPACKSTOCK"]);
data.GID = Convert.ToString(reader["GID"]);
data.ASSOCIATEDNO = Convert.ToString(reader["ASSOCIATEDNO"]);
data.CONTRACTNO = Convert.ToString(reader["CONTRACTNO"]);
data.CHARGEUNIT = Convert.ToString(reader["CHARGEUNIT"]);
data.CUSTOMNO = Convert.ToString(reader["CUSTOMNO"]);
data.GOODSGRADE = Convert.ToString(reader["GOODSGRADE"]);
data.GOODSSLICE = Convert.ToString(reader["GOODSSLICE"]);
data.GOODSSTANDARD = Convert.ToString(reader["GOODSSTANDARD"]);
data.REMARK = Convert.ToString(reader["REMARK"]);
data.hj_GOODSPACKACTUAL = Convert.ToString(reader["hj_GOODSPACKACTUAL"]);
data.hj_GOODSRKSLACTUAL = Convert.ToString(reader["hj_GOODSRKSLACTUAL"]);
data.COMPANYNAME = Convert.ToString(reader["COMPANYNAME"]);
data.GOODSNUM = Convert.ToString(reader["GOODSNUM"]);
data.WeiWanShui = Convert.ToString(reader["WeiWanShui"]); //需求编号SR2017062200002
data.ISBONDEDNAME = Convert.ToString(reader["ISBONDEDNAME"]); //是否保税SR2017062600003
if (Convert.ToString(reader["ISBONDED"]) == "0")
{
data.GOODSNUM = "0";//是否保税SR2017062600003
data.WeiWanShui = "0";//是否保税SR2017062600003
}
data.GOODSSLICE_OUT = Convert.ToString(reader["GOODSSLICE_OUT"]);//需求编号SR2017071100001
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
#region 按客户、分公司分组 按品名分组
public ContentResult GetGroupList(int start, int limit, string sort, string condition, string GROUPBY)
{
var dataList = GetGroupList(condition, sort, GROUPBY);
var list = dataList.Skip(start).Take(limit);
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = list.ToList() });
return new ContentResult() { Content = json };
}
private static List<Wms_StockTakemb> GetGroupList(string strCondition, string sort,string GROUPBY)//CUSTOMERNAME,goodsname,chargeunit
{
var strSql = new StringBuilder();
var searchField = "";
var GROUPField = "";
if (GROUPBY == "Customer") {
searchField = "CUSTOMERNAME,goodsname,chargeunit,ISBONDED,ISBONDEDNAME=(case when ISBONDED=1 then '是' else '否' end)";//是否保税SR2017062600003
GROUPField = "CUSTOMERNAME,goodsname,chargeunit,ISBONDED";//是否保税SR2017062600003
}
if (GROUPBY == "Company")
{
searchField = "(select name from company where gid=corpid) companyname,goodsname,chargeunit,ISBONDED,ISBONDEDNAME=(case when ISBONDED=1 then '是' else '否' end)";//是否保税SR2017062600003
GROUPField = "corpid,goodsname,chargeunit,ISBONDED";//是否保税SR2017062600003
}
if (GROUPBY == "GOODSNAME")
{
searchField = "'' companyname,goodsname,chargeunit,ISBONDED,ISBONDEDNAME=(case when ISBONDED=1 then '是' else '否' end)";//是否保税SR2017062600003
GROUPField = "corpid,goodsname,chargeunit,ISBONDED";//是否保税SR2017062600003
}
strSql.Append(" select " + searchField);
strSql.Append(" ,sum(hj_GOODSRKSL) hj_GOODSRKSL,sum(hj_GOODSPFSL_OUT) hj_GOODSPFSL_OUT ");
strSql.Append(" ,sum(hj_GOODSstock) hj_GOODSstock,sum(hj_GOODSPACK) hj_GOODSPACK ");
strSql.Append(" ,sum(hj_GOODSPACKPFSL) hj_GOODSPACKPFSL,sum(hj_GOODSpackstock) hj_GOODSpackstock,sum(GOODSNUM) GOODSNUM,sum(WeiWanShui) WeiWanShui "); //需求编号SR2017062200002
strSql.Append(" from");
//strSql.Append(" (select vws.*, vs.ETD from vw_wms_stocktake vws left join vw_settlement vs on vs.mblno=vws.blno ");
strSql.Append(" (select vws.*,vs.ETD from vw_wms_stocktake vws left join v_op_bs vs on vs.BSNO=vws.ASSOCIATEDNO");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" where " + strCondition);
}
strSql.Append(" )t1 ");
strSql.Append(" group by " + GROUPField);
var sortstring = DatasetSort.Getsortstring(sort);
if (!string.IsNullOrEmpty(sortstring))
{
strSql.Append(" order by " + sortstring);
}
if (GROUPBY == "Customer")//按客户
{
return SetCustomerData(strSql);
}
else //if (GROUPBY == "Company")//按分公司 按品名
{
return SetCompanyData(strSql);
}
}
#region 按客户分组实体类
private static List<Wms_StockTakemb> SetCustomerData(StringBuilder strSql)
{
var headList = new List<Wms_StockTakemb>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
var data = new Wms_StockTakemb();
#region Set DB data to Object
data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERNAME"]);
data.GOODSNAME = Convert.ToString(reader["GOODSNAME"]);
data.CHARGEUNIT = Convert.ToString(reader["CHARGEUNIT"]);
data.hj_GOODSRKSL = Convert.ToString(reader["hj_GOODSRKSL"]);
data.hj_GOODSPFSL_OUT = Convert.ToString(reader["hj_GOODSPFSL_OUT"]);
data.hj_GOODSSTOCK = Convert.ToString(reader["hj_GOODSSTOCK"]);
data.hj_GOODSPACK = Convert.ToString(reader["hj_GOODSPACK"]);
data.hj_GOODSPACKPFSL = Convert.ToString(reader["hj_GOODSPACKPFSL"]);
data.hj_GOODSPACKSTOCK = Convert.ToString(reader["hj_GOODSPACKSTOCK"]);
data.GOODSNUM = Convert.ToString(reader["GOODSNUM"]);
data.WeiWanShui = Convert.ToString(reader["WeiWanShui"]); //需求编号SR2017062200002
data.ISBONDEDNAME = Convert.ToString(reader["ISBONDEDNAME"]); //是否保税SR2017062600003
if (Convert.ToString(reader["ISBONDED"]) == "0")
{
data.GOODSNUM = "0";//是否保税SR2017062600003
data.WeiWanShui = "0";//是否保税SR2017062600003
}
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
#region 按分公司分组实体类
private static List<Wms_StockTakemb> SetCompanyData(StringBuilder strSql)
{
var headList = new List<Wms_StockTakemb>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
var data = new Wms_StockTakemb();
#region Set DB data to Object
data.COMPANYNAME = Convert.ToString(reader["COMPANYNAME"]);
data.GOODSNAME = Convert.ToString(reader["GOODSNAME"]);
data.CHARGEUNIT = Convert.ToString(reader["CHARGEUNIT"]);
data.hj_GOODSRKSL = Convert.ToString(reader["hj_GOODSRKSL"]);
data.hj_GOODSPFSL_OUT = Convert.ToString(reader["hj_GOODSPFSL_OUT"]);
data.hj_GOODSSTOCK = Convert.ToString(reader["hj_GOODSSTOCK"]);
data.hj_GOODSPACK = Convert.ToString(reader["hj_GOODSPACK"]);
data.hj_GOODSPACKPFSL = Convert.ToString(reader["hj_GOODSPACKPFSL"]);
data.hj_GOODSPACKSTOCK = Convert.ToString(reader["hj_GOODSPACKSTOCK"]);
data.GOODSNUM = Convert.ToString(reader["GOODSNUM"]);
data.WeiWanShui = Convert.ToString(reader["WeiWanShui"]); //需求编号SR2017062200002
data.ISBONDEDNAME = Convert.ToString(reader["ISBONDEDNAME"]); //是否保税SR2017062600003
if (Convert.ToString(reader["ISBONDED"]) == "0")
{
data.GOODSNUM = "0";//是否保税SR2017062600003
data.WeiWanShui = "0";//是否保税SR2017062600003
}
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
#endregion
#region 合计列表
public ContentResult GetDataSumList(int start, int limit, string sort, string condition)
{
var dataList = GetDataSumList(condition, sort);
var list = dataList.Skip(start).Take(limit);
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = list.ToList() });
return new ContentResult() { Content = json };
}
private static List<Wms_StockTakemb> GetDataSumList(string strCondition, string sort)
{
var strSql = new StringBuilder();
strSql.Append(" select "
+ " sum(hj_GOODSPACK) as hj_GOODSPACK"//入库件数
+ ",sum(WeiWanShui) as WeiWanShui"//未完税件数
+ ",sum(GOODSNUM) as GOODSNUM"//完税件数
+ ",sum(hj_GOODSPACKSTOCK) as hj_GOODSPACKSTOCK"//库存件数
+ ",sum(hj_GOODSRKSL) as hj_GOODSRKSL"//入库数量
+ ",sum(hj_GOODSSTOCK) as hj_GOODSSTOCK"//库存数量
+ ",sum(hj_GOODSPACKPFSL) as hj_GOODSPACKPFSL"//出库件数
+ ",sum(GOODSSLICE_OUT) as GOODSSLICE_OUT"//出库包装件数
+ ",sum(hj_GOODSPFSL_OUT) as hj_GOODSPFSL_OUT"//出库数量
+ " from ("
+ " (select "
+ " sum(hj_GOODSPACK) as hj_GOODSPACK"//入库件数
+ ",sum(WeiWanShui) as WeiWanShui"//未完税件数
+ ",sum(GOODSNUM) as GOODSNUM"//完税件数
+ ",sum(hj_GOODSPACKSTOCK) as hj_GOODSPACKSTOCK"//库存件数
+ ",sum(hj_GOODSRKSL) as hj_GOODSRKSL"//入库数量
+ ",sum(hj_GOODSSTOCK) as hj_GOODSSTOCK"//库存数量
+ ",0 as hj_GOODSPACKPFSL"//出库件数
+ ",0 as GOODSSLICE_OUT"//出库包装件数
+ ",0 as hj_GOODSPFSL_OUT"//出库数量
+ " from (select gid,wmsno,hj_GOODSPACK, WeiWanShui, GOODSNUM, hj_GOODSPACKSTOCK, hj_GOODSRKSL, hj_GOODSSTOCK,0 as hj_GOODSPACKPFSL,0 as GOODSSLICE_OUT,0 as hj_GOODSPFSL_OUT"
+ " from vw_wms_stocktake as vws left join v_op_bs as vs on vs.BSNO=vws.ASSOCIATEDNO");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" where " + strCondition);
}
strSql.Append(" group by gid,wmsno,hj_GOODSPACK, WeiWanShui, GOODSNUM, hj_GOODSPACKSTOCK, hj_GOODSRKSL, hj_GOODSSTOCK) as a");
strSql.Append(" group by wmsno)"
+ " union "
+ " (select "
+ " 0 as hj_GOODSPACK"//入库件数
+ ",0 as WeiWanShui"//未完税件数
+ ",0 as GOODSNUM"//完税件数
+ ",0 as hj_GOODSPACKSTOCK"//库存件数
+ ",0 as hj_GOODSRKSL"//入库数量
+ ",0 as hj_GOODSSTOCK"//库存数量
+ ",sum(hj_GOODSPACKPFSL) as hj_GOODSPACKPFSL"//出库件数
+ ",sum(GOODSSLICE_OUT) as GOODSSLICE_OUT"//出库包装件数
+ ",sum(hj_GOODSPFSL_OUT) as hj_GOODSPFSL_OUT"//出库数量
+ " from vw_wms_stocktake as vws left join v_op_bs as vs on vs.BSNO=vws.ASSOCIATEDNO");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" where " + strCondition);
}
strSql.Append(")) as a ");
return SetSumData(strSql);
}
private static List<Wms_StockTakemb> SetSumData(StringBuilder strSql)
{
var headList = new List<Wms_StockTakemb>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
var data = new Wms_StockTakemb();
#region Set DB data to Object
data.hj_GOODSPACK = Convert.ToString(reader["hj_GOODSPACK"]);//入库件数
data.WeiWanShui = Convert.ToString(reader["WeiWanShui"]);//未完税件数
data.GOODSNUM = Convert.ToString(reader["GOODSNUM"]);//完税件数
data.hj_GOODSPACKPFSL = Convert.ToString(reader["hj_GOODSPACKPFSL"]);//出库件数
data.GOODSSLICE_OUT = Convert.ToString(reader["GOODSSLICE_OUT"]);//出库包装件数
data.hj_GOODSPACKSTOCK = Convert.ToString(reader["hj_GOODSPACKSTOCK"]);//库存件数
data.hj_GOODSRKSL = Convert.ToString(reader["hj_GOODSRKSL"]);//入库数量
data.hj_GOODSPFSL_OUT = Convert.ToString(reader["hj_GOODSPFSL_OUT"]);//出库数量
data.hj_GOODSSTOCK = Convert.ToString(reader["hj_GOODSSTOCK"]);//库存数量
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
}
}