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 ;
using DSWeb.TruckMng.Comm.Cookie ;
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 , CookieConfig . GetCookie_UserId ( Request ) , Convert . ToString ( Session [ "SHOWNAME" ] ) , Convert . ToString ( Session [ "COMPANYID" ] ) ) ;
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 , string userid , string username , string companyid )
{
/ * *
var rangstr = GetRangDAStr ( "index" , userid , username , companyid ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstr ;
}
else
{
strCondition = rangstr ;
}
}
* /
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select vws.*,wms.AREANAME" ) ;
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 ( ",dbo.F_WMSINCOUNTRY_CN(NID) COUNTRYOFORIGIN " ) ;
//解决综合查询结果为重复的两条的问题
//strSql.Append(" from vw_wms_stocktake as vws left join v_op_bs as vs on vs.BSNO=vws.ASSOCIATEDNO ");//
strSql . Append ( " from vw_wms_stocktake as vws left join v_op_bs as vs on vs.BSNO=vws.ASSOCIATEDNO left join wms on vws.NID=WMS.GID " ) ;
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
data . CLEARSTOCKGAP = Convert . ToString ( reader [ "CLEARSTOCKGAP" ] ) ;
data . AREANAME = Convert . ToString ( reader [ "AREANAME" ] ) ; //需求编号: SR2020051900002
data . COUNTRYOFORIGIN = Convert . ToString ( reader [ "COUNTRYOFORIGIN" ] ) ;
# 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,MBLNO" ; //是否保税: 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,MBLNO" ; //是否保税: SR2017062600003
}
if ( GROUPBY = = "GOODSNAME" )
{
searchField = "'' companyname,goodsname,chargeunit,ISBONDED,ISBONDEDNAME=(case when ISBONDED=1 then '是' else '否' end)" ; //是否保税: SR2017062600003
GROUPField = "corpid,goodsname,chargeunit,ISBONDED,MBLNO" ; //是否保税: SR2017062600003
}
if ( GROUPBY = = "CNTRNO" )
{
searchField = "CNTRNO,goodsname,chargeunit,ISBONDED,ISBONDEDNAME=(case when ISBONDED=1 then '是' else '否' end)" ; //是否保税: SR2017062600003
GROUPField = "CNTRNO,goodsname,chargeunit,ISBONDED,MBLNO" ; //是否保税: 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,MBLNO " ) ; //需求编号: 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.mblno,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 = = "CNTRNO" ) //按客户
{
return SetCNTRNOData ( strSql ) ;
}
else //if (GROUPBY == "Company")//按分公司 按品名
{
return SetCompanyData ( strSql ) ;
}
}
#region 按CNTRNO分组实体类
private static List < Wms_StockTakemb > SetCNTRNOData ( 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 . CNTRNO = Convert . ToString ( reader [ "CNTRNO" ] ) ;
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
data . MBLNO = Convert . ToString ( reader [ "MBLNO" ] ) ; //泰泽需求, 20190321
if ( Convert . ToString ( reader [ "ISBONDED" ] ) = = "0" )
{
data . GOODSNUM = "0" ; //是否保税: SR2017062600003
data . WeiWanShui = "0" ; //是否保税: SR2017062600003
}
//data.WHS_CODE = Convert.ToString(reader["WHS_CODE"]);//SR2020060800003
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
# endregion
#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
data . MBLNO = Convert . ToString ( reader [ "MBLNO" ] ) ; //泰泽需求, 20190321
if ( Convert . ToString ( reader [ "ISBONDED" ] ) = = "0" )
{
data . GOODSNUM = "0" ; //是否保税: SR2017062600003
data . WeiWanShui = "0" ; //是否保税: SR2017062600003
}
//data.WHS_CODE = Convert.ToString(reader["WHS_CODE"]);//SR2020060800003
# 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
}
data . MBLNO = Convert . ToString ( reader [ "MBLNO" ] ) ; //泰泽需求, 20190321
//data.WHS_CODE = Convert.ToString(reader["WHS_CODE"]);//SR2020060800003
# 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 all "
+ " (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
}
}