269 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			269 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
	
|  |  | |||
|  | /// <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) | |||
|  |         {  | |||
|  |             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; | |||
|  |             } | |||
|  |         } | |||
|  |     } | |||
|  | } |