/// ///INTERFACE IMPLIMENT FOR TABLE t_wmsOutPickPort ///By wm with codesmith. ///on 06/15/2017 /// using System; using System.Data.SqlClient; using DeiNiu.Utils; namespace DeiNiu.wms.Data.Model { [Serializable] class WmsOutPickPort_Imp : WmsOutPickPort_base_Imp { protected override void CmdPrepare(SqlCommand sqlCmd) { WaveRule wr; base.CmdPrepare(sqlCmd); WmsOutPickPort mObj = ( WmsOutPickPort)modelObj; switch (_cust_op_flag) { case 99: //query with dic if (mObj.CmdParameters[0].ToString().Contains("saleOrder =")) { _strSql = "SELECT *,ROW_NUMBER() OVER (ORDER BY ID DESC) as sortNo FROM [v_stockOutBatchPickDetailWithSaleOrder] 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_stockOutBatchPickDetailWithSaleOrder] WHERE 1 = 1 " + mObj.CmdParameters[0].ToString(); } else { _strSql = "SELECT *,ROW_NUMBER() OVER (ORDER BY ID DESC) as sortNo FROM v_stockOutBatchPickDetail 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_stockOutBatchPickDetail 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: //by name _strSql = "SELECT * FROM t_wmsOutPickPort WHERE NAME = @NAME"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@NAME", mObj.CmdParameters[0]); break; case 200: //by pickorderNo _strSql = "SELECT * FROM t_wmsOutPickPort WHERE pickOrderNo = @pickOrderNo"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@pickOrderNo", mObj.CmdParameters[0]); break; case 300: //get detail by Id // _strSql = "SELECT * FROM [v_stockOutBatchPickDetail] WHERE ID = @Id"; _strSql = "SELECT * FROM [v_stockOutPort] WHERE ID = @Id"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@Id", mObj.CmdParameters[0]); break; case 400: //update state by Id _strSql = "UPDATE t_wmsOutPickPort SET STATE = @STATE ,operater =@operater,lastmodified = getdate() WHERE ID = @Id"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@Id", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@STATE", mObj.CmdParameters[1]); sqlCmd.Parameters.AddWithValue("@operater", mObj.CmdParameters[2]); break; case 401: //update state by pickOrderDetailId, bulk item validation done _strSql = "UPDATE t_wmsOutPickPort SET STATE = @STATE ,operater =@operater,lastmodified = getdate()" + " , checkby=@operater,checkBy2=@checkBy2,checkTime=getdate(),checkByTime2=getdate()" +" WHERE pickDetailId = @pickDetailId"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@pickDetailId", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@STATE", mObj.CmdParameters[1]); sqlCmd.Parameters.AddWithValue("@operater", mObj.CmdParameters[2]); sqlCmd.Parameters.AddWithValue("@checkBy2", mObj.CmdParameters[3]); break; case 410: //update state by stockRecordId _strSql = "UPDATE t_wmsOutPickPort SET STATE = @STATE ,pickby=@operater,pickTime=getdate(),operater =@operater,lastmodified = getdate() WHERE recordId = @recordId"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@recordId", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@STATE", mObj.CmdParameters[1]); sqlCmd.Parameters.AddWithValue("@operater", mObj.CmdParameters[2]); break; case 500: //by pickorderNo( or exclude rep pick order) _strSql = "SELECT COUNT(*) FROM t_wmsOutPickPort WHERE state =@STATE"; _strSql += Convert.ToBoolean(mObj.CmdParameters[2].ToString()) ? " and volType > 0" //整库货位 : " and volType <= 0"; //零库货位 if (!string.IsNullOrEmpty(mObj.CmdParameters[0].ToString())) { _strSql += " and pickOrderNo = @pickOrderNo "; sqlCmd.Parameters.AddWithValue("@pickOrderNo", mObj.CmdParameters[0]); } else if (!string.IsNullOrEmpty(mObj.CmdParameters[3].ToString())) { _strSql += " and waveOrder = @waveOrder "; sqlCmd.Parameters.AddWithValue("@waveOrder", mObj.CmdParameters[3]); } else { _strSql += " and waveOrder is not null "; } sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@STATE", mObj.CmdParameters[1]); break; case 600: // get count for flowno and state _strSql = "select count(*) from t_wmsOutPickPort where flowNo =@flowNo " + " and state !=@status"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@status", (int)enumPickState.复核完成); sqlCmd.Parameters.AddWithValue("@flowNo", mObj.CmdParameters[0]); break; /* case 700: // 未分配波次的拣货任务 _strSql = "select * from t_wmsOutPickPort a where 1=1 " + " and exists(select 1 from t_wmsOutPickRequest where pickOrderNo =a.pickOrderNo and state=@orderState)" + " and waveOrder is null and state =@pickState" + " order by tranArea,pickOrderNo,voltype,partion,locationid"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@orderState", (int)enumOutStockRequestStatus.等待波次); sqlCmd.Parameters.AddWithValue("@pickState", (int)enumPickState.未拣); break; */ case 700: // 未分配波次的拣货任务 _strSql = "select * from v_stockOutPort port where 1=1 " + " and orderState =@orderState " + " and waveOrder is null and state =@pickState"; wr = (WaveRule)mObj.CmdParameters[0]; if (wr.lineId > 0) { _strSql += " and ( orderType!= @orderType or exists(select 1 from v_tmsLineDetail where custid = port.customerId and lineId =@lineId))"; sqlCmd.Parameters.AddWithValue("@lineId", wr.lineId); } if (!string.IsNullOrEmpty(wr.owner)) { _strSql += " and ( orderType!= @orderType or ownercode =@ownerCode ) "; sqlCmd.Parameters.AddWithValue("@ownerCode", wr.owner); } _strSql += " order by priority,tranArea,pickOrderNo,voltype,partion,locationid"; // LogHelper.debug("pick waves ", _strSql); sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@orderState", (int)enumOutStockRequestStatus.等待波次); sqlCmd.Parameters.AddWithValue("@pickState", (int)enumPickState.未拣); sqlCmd.Parameters.AddWithValue("@orderType", (int)enumOutOrderType.销售出库); break; case 701: // 未分配波次的拣货任务 4 dps wave _strSql = "select top(@cnt) * from v_stockOutPort port where recType=1 " + " and dpsorder is null and elabId >0 and voltype=0 "; wr = (WaveRule)mObj.CmdParameters[0]; if (wr.lineId > 0) { _strSql += " and ( orderType!= @orderType or exists(select 1 from v_tmsLineDetail where custid = port.customerId and lineId =@lineId))"; sqlCmd.Parameters.AddWithValue("@lineId", wr.lineId); } if (!string.IsNullOrEmpty(wr.owner)) { _strSql += " and ( orderType!= @orderType or ownercode =@ownerCode ) "; sqlCmd.Parameters.AddWithValue("@ownerCode", wr.owner); } sqlCmd.Parameters.AddWithValue("@orderType", (int)enumOutOrderType.销售出库); _strSql += " order by pickOrderNo;"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@cnt", WmsConstants.MAX_CONTROL_DATA_IN_A_WAVE); break; case 800: // 根据waveNo 取wave detail 分页数据 _strSql = "SELECT *,ROW_NUMBER() OVER (ORDER BY ID DESC) as sortNo FROM v_stockOutPort WHERE waveOrder =@waveNo "; _strSql = "SELECT * FROM (" + _strSql + " )AS SORTEDTB WHERE sortNo BETWEEN @START AND @END" + " ORDER BY jobNo "; _strSql += ";SELECT COUNT(*) FROM v_stockOutPort WHERE waveOrder =@waveNo "; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@START", this._rownumStart); sqlCmd.Parameters.AddWithValue("@END", this._rownumEnd); sqlCmd.Parameters.AddWithValue("@waveNo", mObj.CmdParameters[0]); sqlCmd.CommandText = _strSql; break; case 801: // 不分页详细数据 _strSql = "select * from t_wmsOutPickPort where waveOrder =@waveNo order by jobNo " ; sqlCmd.Parameters.AddWithValue("@waveNo", mObj.CmdParameters[0]); sqlCmd.CommandText = _strSql; break; case 900: // get wave detail by waveNo _strSql = "SELECT * FROM [v_stockOutPort] WHERE waveOrder = @waveOrder"; _strSql += " order by volType,part,locationId"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@waveOrder", mObj.CmdParameters[0]); break; case 910: // get wave detail by waveNo and volType _strSql = "SELECT * FROM [v_stockOutPort] WHERE waveOrder = @waveOrder and volType =@volType"; _strSql += " order by part,locationId"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@waveOrder", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@volType", mObj.CmdParameters[1]); break; case 920: // get wave detail summary by waveNo and volType = bulk _strSql = "SELECT * FROM [v_stockOutPortSum] WHERE waveOrder = @waveOrder and volType =@volType "; _strSql += " order by pickOrderNo,jobNo"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@waveOrder", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@volType", mObj.CmdParameters[1]); break; case 1000: //by orderNo _strSql = "SELECT * FROM v_stockOutPort WHERE jobNo = @jobNo"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@jobNo", mObj.CmdParameters[0]); break; case 1001: //by flowno _strSql = "SELECT * FROM v_stockOutPort WHERE flowNo = @flowNo and goodsId=@goodsId and isnull(batch,'' )=@batch"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@flowNo", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@goodsId", mObj.CmdParameters[1]); sqlCmd.Parameters.AddWithValue("@batch", mObj.CmdParameters[2]); break; case 1100: //getFreeTasks _strSql = "SELECT * FROM [v_stockOutBatchPickDetail] a WHERE isnull(takeBy,0) =0 "; _strSql += " and orderType =@orderType "; sqlCmd.Parameters.AddWithValue("@orderType", mObj.CmdParameters[4]); if (Convert.ToBoolean(mObj.CmdParameters[2])) { _strSql += " and volType>0 "; } _strSql += " and state = " + (int)enumPickState.未拣; if (Convert.ToInt16(mObj.CmdParameters[0]) > 0) { _strSql += " and partion =@partion"; sqlCmd.Parameters.AddWithValue("@partion", mObj.CmdParameters[0]); } if (Convert.ToInt16(mObj.CmdParameters[1]) > 0) { _strSql += " and isnull(lineid,0) = @lineId"; sqlCmd.Parameters.AddWithValue("@lineId", mObj.CmdParameters[1]); } if (Convert.ToInt32(mObj.CmdParameters[5]) > 0) { _strSql += " and exists(select 1 from v_empPartions where partion = a.partion and empId=@empId)"; sqlCmd.Parameters.AddWithValue("@empId", mObj.CmdParameters[5]); } _strSql += " order by priority,locationid"; sqlCmd.CommandText = _strSql; break; case 1200: //getAssignedTasks by takeby _strSql = "SELECT * FROM [v_stockOutBatchPickDetail] WHERE state = " + (int)enumPickState.未拣; _strSql += " and takeBy =@takeBy "; _strSql += " and orderType =@orderType "; sqlCmd.Parameters.AddWithValue("@orderType", mObj.CmdParameters[4]); if (Convert.ToBoolean(mObj.CmdParameters[3])) { _strSql += " and volType>0 "; } /* _strSql += " and isnull(lineid,0) = @lineId" + " and isnull(partion,0) =@partion" + " and takeBy =@takeBy" + " order by priority desc,locationid"; _strSql += " and isnull(takeBy,0) =@takeby"; sqlCmd.Parameters.AddWithValue("@partion", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@lineId", mObj.CmdParameters[1]); */ if (Convert.ToInt16( mObj.CmdParameters[2])>0){ _strSql += " and isnull(lineid,0) = @lineId"; sqlCmd.Parameters.AddWithValue("@lineId", mObj.CmdParameters[2]); } if (Convert.ToInt16(mObj.CmdParameters[1]) > 0) { _strSql += " and partion =@partion"; sqlCmd.Parameters.AddWithValue("@partion", mObj.CmdParameters[1]); } _strSql += " order by priority desc,locationid"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@takeBy", mObj.CmdParameters[0]); break; case 1300: //get assigned Tasks by pda //for wince use _strSql = "SELECT [货区], [货位] ,[件],[线路],[数量],[商品] ,[分配人] " + " FROM [v_stockOutBatchPickDetail4Wince] WHERE state = " + (int)enumPickState.未拣 ; _strSql += " and orderType =@orderType "; sqlCmd.Parameters.AddWithValue("@orderType", mObj.CmdParameters[4]); if (Convert.ToBoolean(mObj.CmdParameters[3])) { _strSql += " and volType>0 "; } _strSql += " and isnull(takeBy,0) =@takeby"; if(Convert.ToInt16( mObj.CmdParameters[2])>0){ _strSql += " and isnull(lineid,0) = @lineId"; sqlCmd.Parameters.AddWithValue("@lineId", mObj.CmdParameters[2]); } if (Convert.ToInt16(mObj.CmdParameters[1]) > 0) { _strSql += " and partion =@partion"; sqlCmd.Parameters.AddWithValue("@partion", mObj.CmdParameters[1]); } _strSql += " order by priority desc,货位"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@takeby", mObj.CmdParameters[0]); break; case 1400: //get partion by userid _strSql = "SELECT distinct [partion] ,[partName] FROM [v_empPartions] "; _strSql += " where empid =@empId "; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@empId", mObj.CmdParameters[0]); break; case 1500: //get partion by userid _strSql = "SELECT * from t_wmsOutPickPort where recordId=@recId "; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@recId", mObj.CmdParameters[0]); break; case 1600: //update bulkpickstatus by pickOrder ,seeds finished one pickorder _strSql = " update t_wmsOutPickPort set state =@state " +", checkby=@checkBy,checktime=getdate(),checkBy2=@checkBy2,checkByTime2=getdate()" +" where voltype =0 " + " and pickOrderNo=@pickorderNo " ; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@pickorderNo", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@checkBy", mObj.CmdParameters[1]); sqlCmd.Parameters.AddWithValue("@checkBy2", mObj.CmdParameters[2]); sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[3]); break; case 1700: //get partion by userid _strSql = "SELECT * from [v_repStockOutInTasks] where takeBy =@takeBy "; _strSql += " and state =@state"; if(Convert.ToInt16(mObj.CmdParameters[1].ToString())>0){ _strSql += " and partion =@partion"; sqlCmd.Parameters.AddWithValue("@partion", mObj.CmdParameters[1]); } sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@takeBy", mObj.CmdParameters[0]); sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[2]); break; case 1800://get seeds out detail by flowno _strSql = "SELECT * from [v_stockOutPortSeedsDetail] where flowNo=@flowNo " + "order by goodsId"; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@flowNo", mObj.CmdParameters[0]); break; case 1810://get seeds out detail by flowno, order by cust line order _strSql = "SELECT * from [v_stockOutPortSeedsDetail] where flowNo=@flowNo " + "order by lineOrder "; sqlCmd.CommandText = _strSql; sqlCmd.Parameters.AddWithValue("@flowNo", mObj.CmdParameters[0]); break; } } } }