/// ///INTERFACE IMPLIMENT FOR TABLE t_wmsStock ///By wm with codesmith. ///on 05/14/2017 /// 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) { 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_stockGoodsSum 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_stockGoodsSum 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 110: //initial by locationid _strSql = "SELECT * FROM t_wmsStock WHERE LOCATIONID =@LOCATIONID"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@LOCATIONID", mObj.CmdParameters[0]); break; case 200: //query by goodsid _strSql = "SELECT * FROM v_stockGoods WHERE GOODSID = @GOODSID AND BATCH = @BATCH ORDER BY VOLTYPE DESC";//入库时优先补大货位 //VALIDATIONTERM ASC"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@GOODSID", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@BATCH", mObj.CmdParameters[1]); break; case 500: //query by goodsid _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 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 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 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("养护异常操作:{0},操作人{1},时间{2}", ((enumStockLocationState)mObj.CmdParameters[2]).ToString(), mObj.CmdParameters[3], DateTime.Now.ToShortDateString()); _strSql = " update t_wmsstock set state =@state, operater = @operId , lastmodified = getdate(), description =@desc " +" where goodsId =@goodsId and batch =@batch"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@goodsId", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@batch", mObj.CmdParameters[1]); sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[2]); sqlCmd.Parameters.AddWithValue("@operId", mObj.CmdParameters[3]); 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 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; case 1200:// 根据goodsid,batch取货位存储详细 _strSql = "select * from v_stockGoods " + " where goodsid=@goodsid and batch=@batch " + mObj.CmdParameters[2]; sqlCmd.CommandText = _strSql; 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) 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"; _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; } } } }