/// 
///INTERFACE IMPLIMENT FOR TABLE t_wmsFlow
///By wm with codesmith. 
///on 06/04/2020
/// 
using System;
using System.Data.SqlClient;
using DeiNiu.Utils; 
namespace DeiNiu.wms.Data.Model
{
    [Serializable]  class WmsFlow_Imp : WmsFlow_base_Imp
    { 
        protected override void CmdPrepare(SqlCommand sqlCmd)
        { 
            base.CmdPrepare(sqlCmd);
            WmsFlow mObj = ( WmsFlow)modelObj;
            switch (_cust_op_flag)
            {
             case 99:  //query with dic
                    _strSql = "SELECT *,ROW_NUMBER() OVER (ORDER BY ID DESC) as sortNo  FROM v_flowTasks  WHERE DR = 1 " + mObj.CmdParameters[0].ToString();
                    _strSql = "SELECT * FROM (" + _strSql + " )AS SORTEDTB WHERE sortNo BETWEEN @START AND @END" + " ORDER BY ID DESC";
                    _strSql += ";SELECT COUNT(*) FROM t_wmsFlow  WHERE DR = 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_wmsFlow WHERE NAME = @NAME";
                    sqlCmd.CommandText = _strSql; 
                     sqlCmd.Parameters.AddWithValue("@NAME",   mObj.CmdParameters[0]  );
                    break;
                case 200:  //by flowNo and orderNo
                    _strSql = "SELECT * FROM t_wmsFlow WHERE flowNo = @flowNo"  ;
                    sqlCmd.CommandText = _strSql;
                    sqlCmd.Parameters.AddWithValue("@flowNo", mObj.CmdParameters[0]); 
                    break;
                case 250:  //by flowNo and orderNo,status
                    _strSql = "SELECT * FROM t_wmsFlow WHERE flowNo = @flowNo and orderNo =@orderNo and state =@state and type =@type ";
                    sqlCmd.CommandText = _strSql;
                    sqlCmd.Parameters.AddWithValue("@flowNo", mObj.CmdParameters[0]);
                    sqlCmd.Parameters.AddWithValue("@orderNo", mObj.CmdParameters[1]);
                    sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[2]);
                    sqlCmd.Parameters.AddWithValue("@type", mObj.CmdParameters[3]);
                    break;
                case 260:  //by  task
                    _strSql = "SELECT * FROM t_wmsFlow WHERE task = @task ";
                    sqlCmd.CommandText = _strSql;
                    sqlCmd.Parameters.AddWithValue("@task", mObj.CmdParameters[0]); 
                    break;
                case 270:  //by flowNo and orderNo 
                    _strSql = "SELECT * FROM t_wmsFlow WHERE flowNo = @flowNo and orderNo =@orderNo  ";
                    sqlCmd.CommandText = _strSql;
                    sqlCmd.Parameters.AddWithValue("@flowNo", mObj.CmdParameters[0]);
                    sqlCmd.Parameters.AddWithValue("@orderNo", mObj.CmdParameters[1]);  
                    break;
                case 280:  //query count by owner and type 
                    _strSql = "SELECT count(1) FROM t_wmsFlow WHERE owner = @owner and type =@type and finishedCnt = 0)
                   {
                       _strSql += " and [state] =@state";
                       sqlCmd.Parameters.AddWithValue("@state", status);
                   }
                   if (partion >  0)
                   {
                       _strSql += " and taskPartion =@partion";
                       sqlCmd.Parameters.AddWithValue("@partion", partion);
                   } 
                   if (emId >  0)
                   {
                       _strSql += " and exists(select 1 from v_partionEmployee where partion =f.taskPartion and empId=@emId)  ";
                       sqlCmd.Parameters.AddWithValue("@emId", emId);
                   }
                   if (days > 0)
                   {
                       _strSql += " and createtime > getdate()-@days";
                       sqlCmd.Parameters.AddWithValue("@days", days);
                   }
                    sqlCmd.CommandText = _strSql;
                   
                    break;
                case 600:  //by jobNo  
                    _strSql = "select * from [v_flowTasksDetail] where jobNo= @jobNo";
                    sqlCmd.CommandText = _strSql;
                    sqlCmd.Parameters.AddWithValue("@jobNo", mObj.CmdParameters[0]);
                    break;
                case 601:  //by jobNo  for wince
                    _strSql = "select * from [v_flowTasksDetail4Wince] where jobNo= @jobNo";
                    sqlCmd.CommandText = _strSql;
                    sqlCmd.Parameters.AddWithValue("@jobNo", mObj.CmdParameters[0]);
                    break;
                case 700:  //by flowNo 容器号  
                    _strSql = "select * from [v_flowTask4Wince] where 容器= @flowNo";
                    sqlCmd.CommandText = _strSql;
                    sqlCmd.Parameters.AddWithValue("@flowNo", mObj.CmdParameters[0]);
                    break;
                case 800:  //by flowNo and orderNo
                    _strSql = "SELECT * FROM t_wmsFlow WHERE task = @task ";
                    sqlCmd.CommandText = _strSql;
                    sqlCmd.Parameters.AddWithValue("@task", mObj.CmdParameters[0]);
                    break;
                case 900:  // 开始Job
                    _strSql = "update t_wmsFlow set owner=@owner ,state =@state where task =@taskNo";
                    sqlCmd.CommandText = _strSql; 
                    
                    sqlCmd.Parameters.AddWithValue("@taskNo", mObj.CmdParameters[0]);
                    sqlCmd.Parameters.AddWithValue("@owner", mObj.CmdParameters[1]); 
                    sqlCmd.Parameters.AddWithValue("@state", (int)enumFlowTaskStatus.进行中);
                    break;
                case 1000:  // 开始 jobs
                    _strSql = "update t_wmsFlow set state =@state where flowNo =@flowNo and orderNo=@orderNo and state=@preState";
                    sqlCmd.CommandText = _strSql;
                    sqlCmd.Parameters.AddWithValue("@orderNo", mObj.CmdParameters[0]);
                    sqlCmd.Parameters.AddWithValue("@flowNo", mObj.CmdParameters[1]);
                    sqlCmd.Parameters.AddWithValue("@state", (int)enumFlowTaskStatus.进行中);
                    sqlCmd.Parameters.AddWithValue("@preState", (int)enumFlowTaskStatus.未开始);
                    break;
                case 1100:  // 查询job 状态
                    _strSql = "select 1 from t_wmsFlow where  orderNo=@orderNo and state =@state and flowNo =@flowNo";
                    sqlCmd.CommandText = _strSql;
                    sqlCmd.Parameters.AddWithValue("@orderNo", mObj.CmdParameters[0]);
                    sqlCmd.Parameters.AddWithValue("@flowNo", mObj.CmdParameters[1]);
                    sqlCmd.Parameters.AddWithValue("@state", (int)enumFlowTaskStatus.进行中);
                    break;
                case 1200:  // 开始 jobs
                    _strSql = "update t_wmsFlow set state =@state where  orderNo=@orderNo and state=@preState";
                    sqlCmd.CommandText = _strSql;
                    sqlCmd.Parameters.AddWithValue("@orderNo", mObj.CmdParameters[0]); 
                    sqlCmd.Parameters.AddWithValue("@state", (int)enumFlowTaskStatus.进行中);
                    sqlCmd.Parameters.AddWithValue("@preState", (int)enumFlowTaskStatus.未开始);
                    break;
 
                case 1300:  // 查询 task 状态
                    _strSql = "select * from [v_flowTaskTodaySum] order by taskCnt";
                    sqlCmd.CommandText = _strSql;
                    break;
                case 1400:  // 查询 emp task 
                    _strSql = " SELECT  [operater] ,[taskCnt] ,isnull([em_name],operater) as emName FROM [v_flowTasksDetailTodaySum] order by taskCnt";
                    sqlCmd.CommandText = _strSql;
                    break;
                case 1500:  // 查询 location percent
                    _strSql = " SELECT   [volType]  ,[usedCnt]  ,[totalCnt] FROM [wmsuzhou2].[dbo].[v_locationPercentDailySum] where voltype is not null order by totalCnt";
                    sqlCmd.CommandText = _strSql;
                    break;
  
                case 1600:  // 查询 看板
                    _strSql = "select * from [v_flowTaskTodaySum] order by taskCnt"; //分类任务
                    _strSql += "; SELECT  [operater] ,[taskCnt] ,isnull([em_name],operater) as emName FROM [v_flowTasksDetailTodaySum] order by taskCnt"; //今日绩效
                    _strSql += "; SELECT   [volType] ,[usedCnt]  ,[totalCnt] ,[usedPercent] FROM  [v_locationPercentDailySum] where voltype is not null order by usedPercent desc"; //货位使用
                    _strSql += "; SELECT  * FROM  [v_flowTaskTodaySumByState]  "; //任务汇总
                    sqlCmd.CommandText = _strSql;
                    break;
                case 1700:  // 开始 jobs
                    _strSql = "select * from t_wmsFlow  where  orderNo=@orderNo and type=@type and state <@state";// and flowNo =@flowNo";
                    sqlCmd.CommandText = _strSql;
                    sqlCmd.Parameters.AddWithValue("@orderNo", mObj.CmdParameters[0]);
                    sqlCmd.Parameters.AddWithValue("@type", mObj.CmdParameters[1]);
                    sqlCmd.Parameters.AddWithValue("@state", (int)enumFlowTaskStatus.取消);
                  //  sqlCmd.Parameters.AddWithValue("@flowNo", mObj.CmdParameters[2]);
                    break;
            }
        }
    }
}