/// 
///INTERFACE IMPLIMENT FOR TABLE t_wmsOutPickLable
///By wm with codesmith. 
///on 05/22/2017
/// 
using System;
using System.Data.SqlClient;
using DeiNiu.Utils; 
namespace DeiNiu.wms.Data.Model
{
    [Serializable]  class WmsOutPickLable_Imp : WmsOutPickLable_base_Imp
    { 
        protected override void CmdPrepare(SqlCommand sqlCmd)
        { 
            base.CmdPrepare(sqlCmd);
            WmsOutPickLable mObj = ( WmsOutPickLable)modelObj;
            bool isShowAll = false;
            string wherestr = "";
            switch (_cust_op_flag)
            {
             case 99:  //query with dic
                   
                    break;
          
                case 401: //可亮灯第三方数据
                    _strSql = "SELECT  *  FROM [v_unpick_toLight]  where state=0 order by pickorderno,port,color"; 
                  
                    sqlCmd.CommandText = _strSql;
                    break;
                case 402: //第三方数据,location 需要维护的数据
                    _strSql = "SELECT  distinct locationid  FROM t_wmsOutPickLable a where not exists(select 1 from t_wmslocation where locationid =a.locationid)";
                    sqlCmd.CommandText = _strSql;
                    break;
                case 403: //第三方数据,当前波次
                    _strSql = "SELECT *,0 AS isLightUp, 0 AS isPicked  FROM t_wmsOutPickLable_tmp";
                    _strSql += "; SELECT  distinct locationId  FROM t_wmsOutPickLable a where not exists(select 1 from t_wmslocation where locationid =a.locationid)";
                    sqlCmd.CommandText = _strSql;
                    break;
                case 500: //to get current wave picking list by state
                    _strSql = "SELECT a.*  FROM [t_wmsOutPickLable_tmp] a  where  state =@state"; 
                    sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[0]);
                    sqlCmd.CommandText = _strSql;
                    break;
                case 600 : //拣选结束lable 回传数据  
                      wherestr =  " where state = 0 and color =@color and  elabId =@elabId and elabAddress=@elabAddress ";
                      _strSql = " update [t_wmsOutPickLable_tmp] set state = @state , pickCount =@pickCount "
                               + wherestr;
                       _strSql += "; update [t_wmsOutPickLable] set state = @state , pickCount =@pickCount "
                               + wherestr;
                    sqlCmd.Parameters.AddWithValue("@state", (int)DeiNiu.Utils.enumPickState.已拣); //can be picked more than onece?
                    sqlCmd.Parameters.AddWithValue("@color", mObj.CmdParameters[0]);
                    sqlCmd.Parameters.AddWithValue("@elabId", mObj.CmdParameters[1]);
                    sqlCmd.Parameters.AddWithValue("@pickCount", mObj.CmdParameters[2]);
                    sqlCmd.Parameters.AddWithValue("@elabAddress", mObj.CmdParameters[3]);
                    sqlCmd.CommandText = _strSql;
                      
                    break;
                case 620: //seeding结束lable 回传数据  
                    wherestr = " where state = 1 and port =@port and seedsNo=@seedsNo and  elabId =@elabId";
                    _strSql = "update [t_wmsOutSeeds_tmp] set state = @state , pickCount =@pickCount "
                             + wherestr;
                    sqlCmd.Parameters.AddWithValue("@state", (int)DeiNiu.Utils.enumSeedsState.已按灭); //can be picked more than onece?
                    sqlCmd.Parameters.AddWithValue("@port", mObj.CmdParameters[0]);
                    sqlCmd.Parameters.AddWithValue("@seedsNo", mObj.CmdParameters[1]);
                    sqlCmd.Parameters.AddWithValue("@elabId", mObj.CmdParameters[2]); 
                    sqlCmd.CommandText = _strSql;
                    break;
 
                case 720: //  清除第三方临时数据  ,已完成部分的t_wmsOutPickLable的数据,由第三方负责转入历史表t_wmsOutPickLable_history
                                    _strSql =  "";
#if DEBUG
  
#else
                   string cols = "[pickOrderNo],[waveOrder] ,[color]  ,[count] ,[locationId],[elabId] ,[port] ,[elabAddress] ,[state] ,[pickCount] ,[description] ,[operater],[createtime],[lastmodified]";
                   _strSql += string.Format("; insert into t_wmsOutPickLable_history ({0}) select {1} from t_wmsOutPickLable where waveOrder=@waveOrder ; ", cols, cols); 
                   _strSql += " delete from [t_wmsOutPickLable]  where waveOrder=@waveOrder ; ";
                                        
#endif                            
                    _strSql += "; delete from t_wmsOutPickLable_tmp "  ;
                    _strSql += "; delete from t_wmsOutPickLable_history where createtime+@days