/// ///INTERFACE IMPLIMENT FOR TABLE t_wmsOutRequest ///By wm with codesmith. ///on 05/18/2017 /// using System; using System.Data.SqlClient; using DeiNiu.Utils; namespace DeiNiu.wms.Data.Model { [Serializable] class WmsOutRequest_Imp : WmsOutRequest_base_Imp { protected override void CmdPrepare(SqlCommand sqlCmd) { base.CmdPrepare(sqlCmd); WmsOutRequest mObj = ( WmsOutRequest)modelObj; switch (_cust_op_flag) { case 99: //query orders with free parameters _strSql = "SELECT *,ROW_NUMBER() OVER (ORDER BY ID DESC) as sortNo FROM t_wmsOutRequest WHERE DR = 1 " + mObj.CmdParameters[0].ToString(); _strSql = "SELECT * FROM (" + _strSql + " )AS SORTEDTB WHERE sortNo BETWEEN @START AND @END " + " ORDER BY PRIORITY desc,ID desc"; ; _strSql += ";SELECT COUNT(*) FROM t_wmsOutRequest WHERE DR = 1 " + mObj.CmdParameters[0].ToString(); sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@START", this._rownumStart); sqlCmd.Parameters.AddWithValue("@END", this._rownumEnd); break; case 100: //by orderNo _strSql = "SELECT * FROM t_wmsOutRequest WHERE orderNo = @orderNo"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@orderNo", mObj.CmdParameters[0] ); break; case 200: // _strSql = "SELECT * FROM t_wmsOutRequest r WHERE state = @state"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[0]); break; case 201: // 待出库 _strSql = "SELECT top(@cnt) * FROM t_wmsOutRequest r with(nolock) WHERE pickOrderNo is null" + " and state = @state" //+ " and startOn =@startOn " + " and isnull(dueDate,getdate())<=getdate()+@daysLater"; /*+ // 据上次发货时间间隔满足客户发货间隔定义;满足集货时间定义的 " and ( exists(select 1 from v_customerCanStockOut where custid = r.customerid) " + " or exists( select 1 from v_erp_bussinessDoc where r.customerid =businessId) )" + */ // _strSql += " and not exists(select 1 from v_stockOutDetailStockNotAvailable where orderno = r.orderno )"; /*WaveRule wr = (WaveRule)mObj.CmdParameters[1]; if (wr.lineId > 0) { _strSql += " and exists(select 1 from t_tmsLineDetail where custId =r.customerId and lineid =@lineId ) "; sqlCmd.Parameters.AddWithValue("@lineId", wr.lineId); } if (!string.IsNullOrEmpty(wr.sales)) { _strSql += " and salesperson =@sales "; sqlCmd.Parameters.AddWithValue("@sales", wr.sales); } */ // _strSql += " order by orderType, priority desc,lastModified,customerId,owner "; _strSql += " order by lastModified "; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@cnt", WmsConstants.OUT_PROCESS_ORDERS_CNT*10); sqlCmd.Parameters.AddWithValue("@daysLater", WmsConstants.DUE_DAYS_AUTO_PICK); sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[0]); // sqlCmd.Parameters.AddWithValue("@startOn", mObj.CmdParameters[1]); break; case 2011: // customer 待出库 _strSql = "SELECT * FROM t_wmsOutRequest r with(nolock) WHERE pickOrderNo is null" + " and state = @state" + " and isnull(dueDate,getdate())<=getdate()+@daysLater" + " and r.customerid =@custId"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@custId", mObj.CmdParameters[1]); sqlCmd.Parameters.AddWithValue("@daysLater", WmsConstants.DUE_DAYS_AUTO_PICK); sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[0]); // sqlCmd.Parameters.AddWithValue("@startOn", mObj.CmdParameters[1]); break; case 202: //插入待同步临时数据 _strSql = "DELETE FROM t_erp_sale_tmp; " + "INSERT INTO t_erp_sale_tmp " + "SELECT top (@cnt) ID, orderNo,timeFromErp FROM [v_stockOutRequest_Available] order by timeFromErp"; sqlCmd.Parameters.AddWithValue("@cnt", WmsConstants.OUT_PROCESS_ORDERS_CNT); sqlCmd.CommandText = _strSql; break; case 300: //get order request detail by ORDERNO _strSql = "SELECT * FROM t_wmsOutRequestDetail WHERE ORDERNO = @ORDERNO"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@ORDERNO", mObj.CmdParameters[0]); break; case 400: //get order out detail by ORDERNO _strSql = "SELECT * FROM v_stockOutDetail_wms WHERE ORDERNO = @ORDERNO"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@ORDERNO", mObj.CmdParameters[0]); break; case 500: //sync sales order with erp // pay attention on the insert order   string cols = "[locationid],[orderNo],[goodsId],[skuId],[skuCode] ,[batch] ,[count] ,[bulkCount],[batch1Count],[boxcnt],[productDate],[state] ,[validDate],[whtype],[price],[priority]"; _strSql = string.Format(" ; insert into t_wmsoutdetail({0}) SELECT {1} FROM [v_stockOutDetail_available] ", cols, cols); // first insert outdetail cols = "[locationid],[orderNo] ,[orderSn] ,[goodsId] ,[skuId],[skuCode] ,[batch] ,[productDate] ,[validDate] ,[Count] ,[saleDate] ,[state] ,[whtype],[price],[priority]"; _strSql += string.Format(" ; insert into t_wmsOutRequestDetail({0}) SELECT {1} FROM [v_stockOutRequestDetail_available] ", cols, cols);//second insert request out detail /* cols = "[orderNo],[orderType],[orderTypeName],[ownerCode],[customerId],[customerName],[custAddress] ,[delivery],[phone1],[phone2] ,[salesperson] ,[contactperson] ,[totalnumber],[remark] ,[orderDate] ,[dueDate],[fandian],[priority]"; _strSql += string.Format(" ;insert into t_wmsOutRequest({0}) SELECT {1} FROM [v_stockOutRequest_Available] ", cols, cols); //insert detail first, then main table */ cols = "[orderNo],[orderType],[orderTypeName],[ownerCode],[customerId],[customerName],[custAddress] ,[delivery],[phone1],[phone2] ,[salesperson] ,[contactperson] ,[totalnumber],[remark] ,[orderDate] ,[dueDate],[fandian],[priority]"; _strSql += string.Format(" ;insert into t_wmsOutRequest({0}) SELECT {1} FROM [v_stockOutRequest_Available_tmp] ", cols, cols); //insert detail first, then main table sqlCmd.CommandText = _strSql; break; //自动核准需立即分拣的订单类型进入分拣环节 case 501: // _strSql = "UPDATE t_wmsOutRequest SET STATE =@status,operater =@operater where exists(select 1 from v_stockOutRequest_LastSycs where orderNo = t_wmsOutRequest.orderNo)"; _strSql = "UPDATE v_stockOutRequest_LastSycs SET STATE =@status,operater =@operater ,lastmodified =getdate() where 1=1"; // _strSql += " and pickStartOn = " + (int)enumOutPickStartOn.立即分拣; /* if (WmsConstants.FENDIAN_IN_ONE_PICK_ORDER) { _strSql += " and custType!=@custType and priority =@priority "; sqlCmd.Parameters.AddWithValue("@custType", (int)enumCustomerType.连锁分店); sqlCmd.Parameters.AddWithValue("@priority", (int)enumOutPriority.高); } */ sqlCmd.Parameters.AddWithValue("@status", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@operater", mObj.CmdParameters[1]); sqlCmd.CommandText = _strSql; break; case 502: // 新仓库出库订单按客户属性预分拣设置 _strSql = "update v_stockOutRequest_LastSycs " + "set pickType =custPickType,pickGroup =custPickGroup,pickStartOn =custPickStartOn"; sqlCmd.CommandText = _strSql; break; case 503: // 新仓库出库订单 _strSql = "select * from v_stockOutRequest_LastSycs "; sqlCmd.CommandText = _strSql; break; case 504: _strSql = " SELECT * FROM v_stockOutRequest_Available_tmp order by timeFromErp desc"; sqlCmd.CommandText = _strSql; break; case 505: _strSql = " SELECT * FROM v_stockOutRequest_Available_tmp order by timeFromErp desc"; sqlCmd.CommandText = _strSql; break; case 600: //get new orders to sync with erp //_strSql = string.Format("SELECT {0} FROM [v_stockOutRequest_Available] order by customerId", "-1 as id,*"); _strSql = "SELECT * FROM [v_stockOutRequest_Available] a " + " where exists (select 1 from t_erp_sale_tmp where orderNo= a.orderNo )" +" order by customerId" ; sqlCmd.CommandText = _strSql; break; case 800: //get orders by order type and status // _strSql = "SELECT * FROM [t_wmsoutdetail] a where exists(select 1 from t_wmsoutrequest where orderNo = a.orderNo and orderType =@orderType and status =@status)"; _strSql = "SELECT a.*,b.customerId FROM [t_wmsoutdetail] a left outer join t_wmsoutrequest b on a.orderNo = b.orderNo " + " where b.orderType =@orderType and b.status =@status " + " order by b.[customerId]"; sqlCmd.Parameters.AddWithValue("@orderType", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@status", mObj.CmdParameters[1]); sqlCmd.CommandText = _strSql; break; case 900: //get order details group by custid // string cols2 = "-1 as operater,GETDATE() as lastmodified,true as dr, -1 as id "; // _strSql = string.Format("SELECT {0} FROM [v_stockOutDetailByCust] order by customerName,custAddress ", "*"); _strSql = " SELECT * FROM [v_stockOutDetailByCust] " ; // + "SELECT * FROM t_wmsOutRequest WHERE state = @state"; //sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[0]); sqlCmd.CommandText = _strSql; break; case 1000: //get error pickdetails _strSql = "SELECT * FROM [t_wmsOutPickDetail_error] order by pickOrderNo" ; sqlCmd.CommandText = _strSql; break; case 1100: //get error pickdetails _strSql = "SELECT * FROM [v_stockOutRequestSales] "; sqlCmd.CommandText = _strSql; break; case 1200: // update order status _strSql = " update t_wmsOutRequest set state =@state ,pickOrderNo =@pickOrderNo" + ",operater =@operId,lastmodified = getdate() " +" where state =@stateOld " +" and customerId = @custId and customerName =@custName and custAddress =@custAddress "; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@custId", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@custName", mObj.CmdParameters[1]); sqlCmd.Parameters.AddWithValue("@custAddress", mObj.CmdParameters[2]); sqlCmd.Parameters.AddWithValue("@pickOrderNo", mObj.CmdParameters[3]); sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[4]); sqlCmd.Parameters.AddWithValue("@stateOld", mObj.CmdParameters[5]); sqlCmd.Parameters.AddWithValue("@operId", mObj.CmdParameters[6]); break; case 1210: // update order status and pickorderNo with tmp table _strSql = " update t_wmsOutRequest set state =@state ,pickOrderNo =@pickOrderNo" + ",operater =@operId,lastmodified = getdate() " + " where 1=1" + " and exists(select 1 from t_wmsOutRequestTmp where orderno = t_wmsoutRequest.orderNo) ;"; _strSql += "delete from t_wmsStockLack where exists(select 1 from t_wmsOutRequestTmp where orderno = t_wmsStockLack.orderNo);"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@pickOrderNo", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[1]); sqlCmd.Parameters.AddWithValue("@operId", mObj.CmdParameters[2]); break; case 1211: // update order status with pickorderno and new status _strSql = " update t_wmsOutRequest set state =@state " + ",operater =@operId,lastmodified = getdate() " + " where state =@stateOld and pickOrderNo =@pickOrderNo "; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@pickOrderNo", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[1]); sqlCmd.Parameters.AddWithValue("@stateOld", mObj.CmdParameters[2]); sqlCmd.Parameters.AddWithValue("@operId", mObj.CmdParameters[3]); break; case 1212: // update order status with pickorderno and new status _strSql = " update t_wmsOutRequest set state =@state " + ",operater =@operId,lastmodified = getdate() " + " where pickOrderNo =@pickOrderNo "; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@pickOrderNo", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[1]); sqlCmd.Parameters.AddWithValue("@operId", mObj.CmdParameters[2]); break; case 1300: //prepare the out request orders for pick //待合并订单,库存满足,则进入合并流程 _strSql = " update t_wmsOutRequest set state =@statePrepare " + " where 1=1 " + " and state > @orderStateReady " + " and pickOrderNo is null" +" and not exists(select 1 from [v_stockOutRequestNoStock] " +" where orderNo = t_wmsOutRequest.orderNo);"; //待合并订单,库存不满足,则缺货状态 _strSql += " update t_wmsOutRequest set state =@orderStateNoStock " + " where 1=1 " //+" and state < @orderStateReady " +" and state >= @orderStateApproved " // + " and state = @orderStateApproved " + " and pickOrderNo is null" + " and exists(select 1 from [v_stockOutRequestNoStock] " + " where orderNo = t_wmsOutRequest.orderNo);"; // 更新订单明细状态 库存不足 _strSql += " update t_wmsOutDetail set state =@stateNoStock ,description =@descNoStock" + ",operater =@operId,lastmodified = getdate() " + " where exists(select 1 from [v_stockOutRequestNoStock] " +" where id = t_wmsOutDetail.id);"; //更新明细,若明细是已经缺货状态,从新检查库存,更新状态 _strSql += " update t_wmsOutDetail set state =@dStateReady ,description =''" + ",operater =@operId,lastmodified = getdate() " + " where state =@stateNoStock " + " and exists (select 1 from t_wmsOutRequest where pickOrderNo is null and orderNo = t_wmsOutDetail.orderNo)" + " and not exists(select 1 from [v_stockOutRequestNoStock]" + " where id = t_wmsOutDetail.id);"; // _strSql += " delete from t_wmsOutRequestTmp;"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@stateNoStock", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@descNoStock", mObj.CmdParameters[1]); sqlCmd.Parameters.AddWithValue("@dStateReady", mObj.CmdParameters[2]); sqlCmd.Parameters.AddWithValue("@statePrepare", mObj.CmdParameters[3]); sqlCmd.Parameters.AddWithValue("@operId", mObj.CmdParameters[4]); sqlCmd.Parameters.AddWithValue("@orderStateReady", (int)enumOutStockRequestStatus.待审核); sqlCmd.Parameters.AddWithValue("@orderStateNoStock", (int)enumOutStockRequestStatus.库存不足); sqlCmd.Parameters.AddWithValue("@orderStateApproved", (int)enumOutStockRequestStatus.待出库); break; case 1400: _strSql = "select * from v_stockOutDetailByOrder where orderNo =@orderNo"; sqlCmd.Parameters.AddWithValue("@orderNo", mObj.CmdParameters[0]); sqlCmd.CommandText = _strSql; break; case 1500: //delete bad data _strSql = "delete from t_wmsOutDetail where exists" + "(select 1 from t_wmsOutRequest where state =0 and orderNo = t_wmsOutDetail.orderNo);"; _strSql += " delete from t_wmsOutRequest where state =0 "; sqlCmd.CommandText = _strSql; break; case 1600: _strSql = "select top(@cnt) * from t_wmsOutRequest where state =@state order by customerId"; sqlCmd.Parameters.AddWithValue("@cnt", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[1]); sqlCmd.CommandText = _strSql; break; case 1610: _strSql = "insert into t_wmsOutRequestTmp values(@orderNo);"; _strSql += " update t_wmsOutRequest set lastmodified=getdate() where orderNo=@orderNo;"; sqlCmd.Parameters.AddWithValue("@orderNo", mObj.CmdParameters[0]); sqlCmd.CommandText = _strSql; break; case 1620: _strSql = "delete from t_wmsOutRequestTmp"; if(!string.IsNullOrEmpty( mObj.CmdParameters[0].ToString())){ _strSql+=" where orderNo =@orderNo ;"; sqlCmd.Parameters.AddWithValue("@orderNo", mObj.CmdParameters[0]); } sqlCmd.CommandText = _strSql; break; case 1630: _strSql = "select top(@cnt) * from t_wmsOutRequest where state =@state order by customerId"; sqlCmd.Parameters.AddWithValue("@cnt", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[1]); sqlCmd.CommandText = _strSql; break; //check store by skuId case 1640: _strSql = "select * from v_stockOutDetailByCustStockNotAvailableBySkuId "; sqlCmd.CommandText = _strSql; break; //check store by goodsId and batch case 1670: _strSql = "select * from v_stockOutDetailByCustStockNotAvailableByBatch "; sqlCmd.CommandText = _strSql; break; case 1680: _strSql = "select * from v_stockOutDetailByCustStockNotAvailableByGoodsId "; sqlCmd.CommandText = _strSql; break; case 1650: _strSql = "select 1 from v_stockOutDetailByCust "; sqlCmd.CommandText = _strSql; break; case 1660: _strSql = "select * from v_stockOutDetailByCustStockNotAvailable "; sqlCmd.CommandText = _strSql; break; case 1700: _strSql = "select * from v_stockOutRequest4DasSumDetailInfo where " +" [pickgroup] =@pickGroup and [pickStartOn] =@pickStartOn " +" and duedate =@dueDate " + " and requestState =@orderState and state =@detailState "; sqlCmd.Parameters.AddWithValue("@pickGroup", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@pickStartOn", mObj.CmdParameters[1]); sqlCmd.Parameters.AddWithValue("@dueDate", mObj.CmdParameters[2]); sqlCmd.Parameters.AddWithValue("@orderState", mObj.CmdParameters[3]); sqlCmd.Parameters.AddWithValue("@detailState", mObj.CmdParameters[4]); sqlCmd.CommandText = _strSql; break; case 1701: _strSql = "SELECT *,ROW_NUMBER() OVER (ORDER BY ID DESC) as sortNo FROM v_stockOutRequest4DasSumDetailInfo WHERE 1 = 1 " + mObj.CmdParameters[0].ToString(); _strSql = "SELECT * FROM (" + _strSql + " )AS SORTEDTB WHERE sortNo BETWEEN @START AND @END order by custcount desc"; _strSql += ";SELECT COUNT(*) FROM v_stockOutRequest4DasSumDetailInfo 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 1702: _strSql = "select * from [v_stockOutRequest4DasDetail] where skuId=@skuId"; sqlCmd.Parameters.AddWithValue("@skuId", mObj.CmdParameters[0]); sqlCmd.CommandText = _strSql; break; case 1703: _strSql = "select * from [v_stockOutRequest4DasDetail] where goodsId=@goodsId"; sqlCmd.Parameters.AddWithValue("@goodsId", mObj.CmdParameters[0]); sqlCmd.CommandText = _strSql; break; case 1800: _strSql = "insert into t_wmsOutPickDetail (pickOrderNo,skuId,skucode,goodsId,batch,count,bulkCount,batch1Count,boxcnt,state,operater )" + " select @pickOrderNo,skuId,skucode,goodsId,batch,count,bulkCount,batch1Count,boxcnt,state, @operater from v_stockOutRequest4DasSumDetailInfo where " + " [pickgroup] =@pickGroup and [pickStartOn] =@pickStartOn " + " and duedate =@dueDate " + " and requestState =@orderState1 and state =@detailState "; _strSql += "; update t_wmsOutRequest set state= @orderState2 ,pickOrderNo =@pickOrderNo " + "where pickgroup =@pickGroup and pickStartOn =@pickStartOn" + " and duedate =@dueDate " ; sqlCmd.Parameters.AddWithValue("@pickGroup", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@pickStartOn", mObj.CmdParameters[1]); sqlCmd.Parameters.AddWithValue("@dueDate", mObj.CmdParameters[2]); sqlCmd.Parameters.AddWithValue("@orderState1", mObj.CmdParameters[3]); sqlCmd.Parameters.AddWithValue("@detailState", mObj.CmdParameters[4]); sqlCmd.Parameters.AddWithValue("@pickOrderNo", mObj.CmdParameters[5]); sqlCmd.Parameters.AddWithValue("@operater", mObj.CmdParameters[6]); sqlCmd.Parameters.AddWithValue("@orderState2", (int)enumOutStockRequestStatus.准备分拣); sqlCmd.CommandText = _strSql; break; case 1900: _strSql = "select * from [v_stockOutRequestDetail_available] where 1=1 and" + " batch is not null " + " and productDate is not null" + " and validDate is not null " + "and ( skuId is null or skuId=0) "; sqlCmd.CommandText = _strSql; break; case 1910: _strSql = " select * FROM [custErp_suzou2].[dbo].[t_erp_sale_d] d where 1=1" + " and exists(select 1 from v_stockOutRequestDetail_available where id=d.id) " + " and batch is not null " + " and product_date is not null " + " and save_date is not null" + " and ( skuId is null or skuId=0) "; sqlCmd.CommandText = _strSql; break; case 2000: _strSql = "select * from t_wmsOutRequest where pickOrderno=@pickorder"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@pickorder", mObj.CmdParameters[0]); break; case 2100: _strSql = " update t_wmsOutDetail set state= @stateLack ,description= @desc " + " where orderNo =@orderNo and skuId =@skuId"; sqlCmd.Parameters.AddWithValue("@orderNo", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@skuId", mObj.CmdParameters[1]); sqlCmd.Parameters.AddWithValue("@desc", mObj.CmdParameters[2]); sqlCmd.Parameters.AddWithValue("@stateLack", (int)enumOutStockDetailStatus.库存不足); break; case 3000: _strSql = "select * from t_wmsOutRequestTmp"; sqlCmd.CommandText = _strSql; break; } } } }