ldj/Model/wms/data/WmsStock_Imp.cs

411 lines
25 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/// <summary>
///INTERFACE IMPLIMENT FOR TABLE t_wmsStock
///By wm with codesmith.
///on 05/14/2017
/// </summary>
using System;
using System.Data.SqlClient;
using DeiNiu.Utils;
namespace DeiNiu.wms.Data.Model
{
[Serializable] class WmsStock_Imp : WmsStock_base_Imp
{
protected override void CmdPrepare(SqlCommand sqlCmd)
{
string locStatusWhere = " and locState =0 and state =0";
base.CmdPrepare(sqlCmd);
WmsStock mObj = ( WmsStock)modelObj;
switch (_cust_op_flag)
{
case 99: //query with dic
_strSql = "SELECT *,ROW_NUMBER() OVER (ORDER BY ID) as sortNo FROM v_stockGoods WHERE 1=1 " + mObj.CmdParameters[0].ToString();
_strSql = "SELECT * FROM (" + _strSql + ")AS SORTEDTB WHERE sortNo BETWEEN @START AND @END" + " ORDER BY goodsID,batch";
_strSql += ";SELECT COUNT(*) FROM v_stockGoods WHERE 1=1 " + mObj.CmdParameters[0].ToString();
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@START", this._rownumStart);
sqlCmd.Parameters.AddWithValue("@END", this._rownumEnd);
sqlCmd.CommandText = _strSql;
break;
case 98: //query stock sum no batch
_strSql = "SELECT *,ROW_NUMBER() OVER (ORDER BY goodsID) as sortNo FROM v_stockGoodsSumNoBatchAlert WHERE 1=1 " + mObj.CmdParameters[0].ToString();
_strSql = "SELECT * FROM (" + _strSql + ")AS SORTEDTB WHERE sortNo BETWEEN @START AND @END" + " ORDER BY goodsID";
_strSql += ";SELECT COUNT(*) FROM v_stockGoodsSumNoBatchAlert WHERE 1=1 " + mObj.CmdParameters[0].ToString();
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@START", this._rownumStart);
sqlCmd.Parameters.AddWithValue("@END", this._rownumEnd);
sqlCmd.CommandText = _strSql;
break;
case 100: //initial by goodsid,batch,locationid
_strSql = "SELECT * FROM t_wmsStock WHERE GOODSID = @GOODSID AND BATCH = @BATCH AND LOCATIONID =@LOCATIONID";
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@GOODSID", mObj.CmdParameters[0] );
sqlCmd.Parameters.AddWithValue("@BATCH", mObj.CmdParameters[1]);
sqlCmd.Parameters.AddWithValue("@LOCATIONID", mObj.CmdParameters[2]);
break;
case 101: //库存汇总查询
_strSql = "SELECT *,ROW_NUMBER() OVER (ORDER BY goodsID) as sortNo FROM [v_stockGoodsSumDesc] WHERE 1=1 " + mObj.CmdParameters[0].ToString();
_strSql = "SELECT * FROM (" + _strSql + ")AS SORTEDTB WHERE sortNo BETWEEN @START AND @END" + " ORDER BY goodsID,batch";
_strSql += ";SELECT COUNT(*) FROM [v_stockGoodsSumDesc] WHERE 1=1 " + mObj.CmdParameters[0].ToString();
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@START", this._rownumStart);
sqlCmd.Parameters.AddWithValue("@END", this._rownumEnd);
sqlCmd.CommandText = _strSql;
break;
case 102: //零库库存补货查询
_strSql = "SELECT *,ROW_NUMBER() OVER (ORDER BY avCount) as sortNo FROM v_stockGoodsBulkBatchAlert WHERE 1=1 " + mObj.CmdParameters[0].ToString();
_strSql = "SELECT * FROM (" + _strSql + ")AS SORTEDTB WHERE sortNo BETWEEN @START AND @END" + " ORDER BY avCount";
_strSql += ";SELECT COUNT(*) FROM v_stockGoodsBulkBatchAlert WHERE 1=1 " + mObj.CmdParameters[0].ToString();
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@START", this._rownumStart);
sqlCmd.Parameters.AddWithValue("@END", this._rownumEnd);
sqlCmd.CommandText = _strSql;
break;
case 103: //initial by skuId,locationid
_strSql = "SELECT * FROM t_wmsStock WHERE LOCATIONID =@LOCATIONID and skuId =@skuId";
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@LOCATIONID", mObj.CmdParameters[0]);
sqlCmd.Parameters.AddWithValue("@skuId", mObj.CmdParameters[1]);
break;
case 110: //initial by locationid
_strSql = "SELECT * FROM t_wmsStock WHERE LOCATIONID =@LOCATIONID";
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@LOCATIONID", mObj.CmdParameters[0]);
break;
case 199: //query orders with free parameters
_strSql = "SELECT *,ROW_NUMBER() OVER (ORDER BY GOODSID DESC) as sortNo FROM v_wmsStockVSerp WHERE 1=1 " + mObj.CmdParameters[0].ToString();
_strSql = "SELECT * FROM (" + _strSql + " )AS SORTEDTB WHERE sortNo BETWEEN @START AND @END";
_strSql += ";SELECT COUNT(*) FROM v_wmsStockVSerp WHERE 1=1 " + mObj.CmdParameters[0].ToString();
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@START", this._rownumStart);
sqlCmd.Parameters.AddWithValue("@END", this._rownumEnd);
break;
//200-202 包含该商品的记录,同品存储
case 200: //query by goodsidbath
_strSql = "SELECT * FROM v_stockGoods WHERE whType=@whType and /*( VOLTYPE=0 OR STORETYPE =0 ) AND*/ GOODSID = @GOODSID AND BATCH = @BATCH ";
_strSql += locStatusWhere;
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@GOODSID", mObj.CmdParameters[0]);
sqlCmd.Parameters.AddWithValue("@BATCH", mObj.CmdParameters[1]);
sqlCmd.Parameters.AddWithValue("@whType", mObj.CmdParameters[2]);
break;
case 201: //query by sku
_strSql = "SELECT * FROM v_stockGoods WHERE whType=@whType and /*( VOLTYPE=0 OR STORETYPE =0 ) AND*/ SKUID= @SKUID ";
_strSql += locStatusWhere;
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@SKUID", mObj.CmdParameters[0]);
sqlCmd.Parameters.AddWithValue("@whType", mObj.CmdParameters[1]);
break;
case 2011: //query by sku
_strSql = "SELECT * FROM v_stockGoods WHERE SKUID= @SKUID ";
// _strSql += locStatusWhere;
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@SKUID", mObj.CmdParameters[0]);
break;
case 202: //query by skucode
_strSql = "SELECT * FROM v_stockGoods WHERE whType=@whType and /*( VOLTYPE=0 OR STORETYPE =0 ) AND*/ SKUCODE = @SKUCODE ";
_strSql += locStatusWhere;
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@SKUCODE", mObj.CmdParameters[0]);
sqlCmd.Parameters.AddWithValue("@whType", mObj.CmdParameters[1]);
break;
case 203: //query by GOODSID
_strSql = "SELECT * FROM v_stockGoods WHERE whType=@whType and /*( VOLTYPE=0 OR STORETYPE =0 ) AND*/ GOODSID = @GOODSID ";
_strSql += locStatusWhere;
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@GOODSID", mObj.CmdParameters[0]);
sqlCmd.Parameters.AddWithValue("@whType", mObj.CmdParameters[1]);
break;
// 204 不包含200,201,202 ,只取不包含该商品的其它商品共享货位的情况,混品存储
case 204: //query sharing locations,不包括该商品
_strSql = " SELECT top(@cnt) * FROM [v_stockGoodsLocationStat]"
+ " where whType=@whType and (storetype =1 or storetype=3) and goodsid !=@goodsId "
+ " and usedPercent <1 and voltype=@volType and goodsType=@goodsType "
+ " and ownercode =@ownercode and (goodsABC is null or goodsABC=@goodsABC) "
;
_strSql += locStatusWhere;
/* +" and ("
// +" (storetype =0 and skuid =@skuId or goodsid =@goodsId and batch=@batch) or " //同品同批
+ "(storetype =1 and ( goodsid !=@goodsId or( goodsid =@goodsId and (skuid!=@skuId or batch !=@batch))))" //混品同批
+ " or (storetype=2 and goodsId =@goodsId )" //同品混批
+ " or (storetype=3 ) "//混品混批
+" )"*/
_strSql += " order by usedpercent";
sqlCmd.CommandText = _strSql;
WmsGoods goods = (WmsGoods)mObj.CmdParameters[1];
sqlCmd.Parameters.AddWithValue("@goodsType", goods.goodsType);
sqlCmd.Parameters.AddWithValue("@ownercode", goods.ownerCode);
sqlCmd.Parameters.AddWithValue("@goodsABC", goods.ABC);
sqlCmd.Parameters.AddWithValue("@goodsId", goods.goodsId);
// sqlCmd.Parameters.AddWithValue("@skuId", mObj.CmdParameters[0]);
// sqlCmd.Parameters.AddWithValue("@batch", mObj.CmdParameters[2]);
sqlCmd.Parameters.AddWithValue("@volType", mObj.CmdParameters[3]);
sqlCmd.Parameters.AddWithValue("@cnt", mObj.CmdParameters[4]);
sqlCmd.Parameters.AddWithValue("@whType", mObj.CmdParameters[5]);
break;
case 300: //query by goodsname like
//_strSql = "SELECT *,ROW_NUMBER() OVER (ORDER BY ID DESC) as sortNo FROM t_wmslocation LOC WHERE 1=1 AND ";
//_strSql += " EXISTS (SELECT 1 FROM V_WMSGOODS WHERE GOODSID = LOC.GOODSID AND GOODSNAME LIKE @GOODSNAME)";
string _strSql1 = "SELECT V.*,LOC.COUNT - LOC.COUNTLOCK - LOC.COUNTOUT AS AVAILABLECOUNT ,ROW_NUMBER() OVER (ORDER BY ID DESC) as sortNo "
+ " FROM t_wmslocation LOC INNER JOIN V_WMSGOODS V "
+" ON LOC.GOODSID = V.GOODSID WHERE 1=1 "
+ " AND LOC.WHTYPE =@WHTYPE "
+ " AND V.GOODSNAME LIKE @GOODSNAME ";
_strSql = " SELECT * FROM (" + _strSql1 + " )AS SORTEDTB WHERE sortNo BETWEEN @START AND @END";
_strSql += ";SELECT COUNT(*) FROM (" + _strSql1 + ")";
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@GOODSNAME", "%" + mObj.CmdParameters[0] + "%");
sqlCmd.Parameters.AddWithValue("@WHTYPE", mObj.CmdParameters[1]);
sqlCmd.Parameters.AddWithValue("@START", this._rownumStart);
sqlCmd.Parameters.AddWithValue("@END", this._rownumEnd);
sqlCmd.CommandText = _strSql;
break;
case 400: //query by goodsid
_strSql = "SELECT * FROM v_reportStockRecord WHERE ORDERNO = @ORDERNO";
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@ORDERNO", mObj.CmdParameters[0]);
break;
case 401: //by skuId to get stock info
_strSql = "SELECT * FROM v_stockGoods s WHERE goodsId = @goodsId ";
int skuId = Convert.ToInt32(mObj.CmdParameters[1].ToString());
if ((enumWhType)mObj.CmdParameters[3] == enumWhType.)
{
_strSql += " and validdate>getdate()+ " + WmsConstants.OUT_MIN_DAYS_VALIDTION_LEFT;
}
if (skuId > 0)
{
_strSql += " and skuId = @skuId ";
sqlCmd.Parameters.AddWithValue("@skuId", skuId);
}
else if (!String.IsNullOrEmpty(mObj.CmdParameters[2].ToString()))
{
_strSql += " and batch = @batch ";
sqlCmd.Parameters.AddWithValue("@batch", mObj.CmdParameters[2]);
}
_strSql += " and avCount > 0 and (state !=@state1 or state !=@state2)"
+ " and whType =@whType "
+ " ORDER BY productDate,batch,createtime";
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@goodsId", mObj.CmdParameters[0]);
sqlCmd.Parameters.AddWithValue("@whType", mObj.CmdParameters[3]);
sqlCmd.Parameters.AddWithValue("@state1", (int)enumStockLocationStatus.);
sqlCmd.Parameters.AddWithValue("@state2", (int)enumStockLocationStatus.);
break;
case 500: //query by goodsId, string batch, enumWhLocVol locVolType, enumWhType whType
_strSql = "SELECT * FROM v_stockGoods WHERE GOODSID = @GOODSID AND BATCH = @BATCH AND VOLTYPE =@VOLTYPE AND WHTYPE =@WHTYPE ORDER BY VALIDATIONTERM ASC";
// _strSql += " ; SELECT SUM( AS CNT FROM v_stockGoods WHERE GOODSID = @GOODSID AND VOLTYPE =@VOLTYPE ";
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@GOODSID", mObj.CmdParameters[0]);
sqlCmd.Parameters.AddWithValue("@VOLTYPE", mObj.CmdParameters[1]);
sqlCmd.Parameters.AddWithValue("@BATCH", mObj.CmdParameters[2]);
sqlCmd.Parameters.AddWithValue("@WHTYPE", mObj.CmdParameters[3]);
break;
case 501: //query by skuId
_strSql = "SELECT * FROM v_stockGoods WHERE SKUID =@SKUID AND VOLTYPE =@VOLTYPE AND WHTYPE =@WHTYPE ORDER BY VALIDATIONTERM ASC";
// _strSql += " ; SELECT SUM( AS CNT FROM v_stockGoods WHERE GOODSID = @GOODSID AND VOLTYPE =@VOLTYPE ";
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@SKUID", mObj.CmdParameters[0]);
sqlCmd.Parameters.AddWithValue("@VOLTYPE", mObj.CmdParameters[1]);
sqlCmd.Parameters.AddWithValue("@WHTYPE", mObj.CmdParameters[2]);
break;
case 502: //query by skuCode
_strSql = "SELECT * FROM v_stockGoods WHERE SKUCODE=@SKUCODE AND VOLTYPE =@VOLTYPE AND WHTYPE =@WHTYPE ORDER BY VALIDATIONTERM ASC";
// _strSql += " ; SELECT SUM( AS CNT FROM v_stockGoods WHERE GOODSID = @GOODSID AND VOLTYPE =@VOLTYPE ";
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@SKUCODE", mObj.CmdParameters[0]);
sqlCmd.Parameters.AddWithValue("@VOLTYPE", mObj.CmdParameters[1]);
sqlCmd.Parameters.AddWithValue("@WHTYPE", mObj.CmdParameters[3]);
break;
case 600: //get stock detail by location id
_strSql = " SELECT * FROM v_stockGoods where locationid =@locId";
sqlCmd.Parameters.AddWithValue("@locId", mObj.CmdParameters[0]);
sqlCmd.CommandText = _strSql;
break;
case 605: //get stock detail by barcode
_strSql = " SELECT * FROM v_stockGoods where barcode =@barcode";
sqlCmd.Parameters.AddWithValue("@barcode", mObj.CmdParameters[0]);
sqlCmd.CommandText = _strSql;
break;
case 610: //get stock detail by location id for wince with ZH title
_strSql = " SELECT * FROM v_stockGoods4Wince where 条码 =@barcode";
sqlCmd.Parameters.AddWithValue("@barcode", mObj.CmdParameters[0]);
sqlCmd.CommandText = _strSql;
break;
case 620: //get stock detail by location id
_strSql = " SELECT * FROM t_wmsStock where locationid =@locId";
sqlCmd.Parameters.AddWithValue("@locId", mObj.CmdParameters[0]);
sqlCmd.CommandText = _strSql;
break;
case 700: //根据货位比较 erp wms库存
string barcode = mObj.CmdParameters[1].ToString();
string goodsId = mObj.CmdParameters[0].ToString();
_strSql = " SELECT 'WMS' as 来源,sum(avcount ) as 数量,locationId as 货位, min(batch) as 批号,max(productdate) as 生产日期,max(validdate) as 有效期至"
+ " FROM v_stockGoods where {0} group by goodsid,locationid "
+ " union all "
+ " SELECT 'ERP' as 来源,count AS 数量,'' AS 货位,batch as 批号,productdate as 生产日期,validDate AS 有效期至 "
+ " FROM v_erpGoodsBalance e where exists(select 1 from v_stockGoods where goodsId = e.goodsId and {1}) ";
if(!string.IsNullOrEmpty(barcode)){
_strSql = string.Format(_strSql, " barcode=@barcode ", " barcode=@barcode ");
sqlCmd.Parameters.AddWithValue("@barcode", mObj.CmdParameters[1]);
}
else if (!string.IsNullOrEmpty(goodsId))
{
_strSql = string.Format(_strSql, " goodsId=@goodsId ", " goodsId=@goodsId ");
sqlCmd.Parameters.AddWithValue("@goodsId", mObj.CmdParameters[0]);
}
sqlCmd.CommandText = _strSql;
break;
case 800: //已下架商品待上架商品列表
int operId = Convert.ToInt16( mObj.CmdParameters[0]) ; //operId ==-1 means all records
_strSql = " select * from v_reportStockRecordDownList4Up4winCE ";
if (operId > 0)
{
_strSql +=" where operater =@operaterId ";
sqlCmd.Parameters.AddWithValue("@operaterId", operId);
}
sqlCmd.CommandText = _strSql;
break;
case 900: //erp 库存 by barcode
_strSql = " SELECT w.*, e.count,e.batch,e.productDate,e.validdate from v_erpGoodsBalance e left outer join v_wmsGoods w "
+" on e.goodsId = w.GoodsId "
+ " where w.barcode=@barcode and e.count > 0 ";
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@barcode", mObj.CmdParameters[0]);
break;
case 1000: //养护异常停售/停售解除
string d = string.Format("\n养护异常操作:{0},操作人{1},时间{2}", ((enumStockLocationStatus)mObj.CmdParameters[1]).ToString(), mObj.CmdParameters[2], DateTime.Now.ToShortDateString());
// _strSql = " update v_stockGoods set state =@state,locState=@state, operater = @operId , lastmodified = getdate(), description +=@desc "
// +" where skuId=@skuId";
_strSql = " update t_wmsStock set state =@state, operater = @operId , lastmodified = getdate(), description +=@desc "
+ " where skuId=@skuId ;";
_strSql += "; update t_wmsLocation set state =@state, operater = @operId , lastmodified = getdate() "
+ " where exists(select 1 from t_wmsStock where skuId=@skuId and locationId =t_wmsLocation.locationId) ;";
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@skuId", mObj.CmdParameters[0]);
sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[1]);
sqlCmd.Parameters.AddWithValue("@operId", mObj.CmdParameters[2]);
sqlCmd.Parameters.AddWithValue("@desc", d);
break;
case 1100:// 记录养护记录
//_strSql = "update a set maintaindate =dateadd( DAY,b.curCycle,maintainDate),operater =@operId,lastmodified =getdate() from t_wmsStock as a,v_erpGoods as b "
// + " where a.goodsid=b.goodsid and Locationid=@locId";
_strSql = " update a set maintaindate = getdate(),operater =@operId,lastmodified =getdate() from t_wmsStock as a "
+ " where Locationid=@locId";
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@locId", mObj.CmdParameters[0]);
sqlCmd.Parameters.AddWithValue("@operId", mObj.CmdParameters[1]);
break;
case 1200:// 根据goodsid,batch取货位存储详细
_strSql = "select * from v_stockGoods "
// + " where goodsid=@goodsid and batch=@batch "
+ " where skuId =@skuId "
+ mObj.CmdParameters[1];
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@skuId", mObj.CmdParameters[0]);
// sqlCmd.Parameters.AddWithValue("@goodsid", mObj.CmdParameters[0]);
// sqlCmd.Parameters.AddWithValue("@batch", mObj.CmdParameters[1]);
break;
case 1300:// 根据goodsid 取10个自由货位
string strABC = "";
if (WmsConstants.IN_STOCK_ABC)
{
strABC = " and f.ABC = g.ABC ";
}
_strSql = "select top (@cnt/2) f.* ,'零货位' as locType,g.bulkMax as volume from v_freelocations f inner join v_wmsgoods g on f.goodstype = g.goodstype and volType =0 " + strABC
+ " where g.goodsid=@goodsid ";
_strSql += "union all select top (@cnt/4) f.* ,'小整货位' as locType ,g.batchMax1 as volume from v_freelocations f inner join v_wmsgoods g on f.goodstype = g.goodstype and volType =1" + strABC
+ " where g.goodsid=@goodsid ";
_strSql += "union all select top (@cnt/4) f.* ,'大整货位' as locType,g.batchMax2 as volume from v_freelocations f inner join v_wmsgoods g on f.goodstype = g.goodstype and volType =2" + strABC
+ " where g.goodsid=@goodsid ";
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@goodsid", mObj.CmdParameters[0]);
sqlCmd.Parameters.AddWithValue("@cnt", mObj.CmdParameters[1]);
break;
case 1400: //query stock record
_strSql = "SELECT *,ROW_NUMBER() OVER (ORDER BY ID DESC) as sortNo FROM [v_reportStockRecord] WHERE 1=1 " + mObj.CmdParameters[0].ToString();
_strSql = "SELECT * FROM (" + _strSql + ")AS SORTEDTB WHERE sortNo BETWEEN @START AND @END" + " ORDER BY ID DESC";
_strSql += ";SELECT COUNT(*) FROM v_reportStockRecord WHERE 1=1 " + mObj.CmdParameters[0].ToString();
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@START", this._rownumStart);
sqlCmd.Parameters.AddWithValue("@END", this._rownumEnd);
sqlCmd.CommandText = _strSql;
break;
case 1500: //query stock used percent
_strSql = "SELECT top (1) usedPercent from v_stockGoodsLocationStat where locationId =@locationid";
sqlCmd.CommandText = _strSql;
sqlCmd.Parameters.AddWithValue("@locationid", mObj.CmdParameters[0]);
break;
}
}
}
}