ldj/Model/wms/data/WmsOutRequest_Imp.cs

491 lines
26 KiB
C#
Raw Normal View History

2023-05-23 16:13:17 +08:00

/// <summary>
///INTERFACE IMPLIMENT FOR TABLE t_wmsOutRequest
///By wm with codesmith.
///on 05/18/2017
/// </summary>
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();
2023-11-21 19:18:23 +08:00
_strSql = "SELECT * FROM (" + _strSql + " )AS SORTEDTB WHERE sortNo BETWEEN @START AND @END " + " ORDER BY PRIORITY desc,ID desc"; ;
2023-05-23 16:13:17 +08:00
_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 "
2023-09-04 22:41:19 +08:00
+ " and isnull(dueDate,getdate())<=getdate()+@daysLater" +
" and exists(select 1 from v_customerCanStockOut where custid = r.customerid)"; // 据上次发货时间间隔满足客户发货间隔定义;满足集货时间定义的
2023-05-23 16:13:17 +08:00
// _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;
2023-09-04 22:41:19 +08:00
sqlCmd.Parameters.AddWithValue("@cnt", WmsConstants.OUT_PROCESS_ORDERS_CNT*10);
2023-05-23 16:13:17 +08:00
sqlCmd.Parameters.AddWithValue("@daysLater", WmsConstants.DUE_DAYS_AUTO_PICK);
sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[0]);
// sqlCmd.Parameters.AddWithValue("@startOn", mObj.CmdParameters[1]);
break;
2023-09-04 22:41:19 +08:00
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;
2023-05-23 16:13:17 +08:00
case 202: //插入待同步临时数据
_strSql = "DELETE FROM t_erp_sale_tmp; "
2023-09-04 22:41:19 +08:00
+ "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);
2023-05-23 16:13:17 +08:00
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 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() "
2023-09-04 22:41:19 +08:00
+ " where 1=1"
2023-05-23 16:13:17 +08:00
+ " 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]);
2023-09-04 22:41:19 +08:00
sqlCmd.Parameters.AddWithValue("@state", mObj.CmdParameters[1]);
sqlCmd.Parameters.AddWithValue("@operId", mObj.CmdParameters[2]);
2023-05-23 16:13:17 +08:00
break;
case 3000:
_strSql = "select * from t_wmsOutRequestTmp";
sqlCmd.CommandText = _strSql;
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 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 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;
}
}
}
}