///
///INTERFACE CLASS FOR TABLE t_wmsOutPickRequest
///By wm with codesmith.
///on 05/22/2017
///
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using DeiNiu.Utils;
using System.Transactions;
namespace DeiNiu.wms.Data.Model
{
[Serializable]
public class WmsOutPickRequest : WmsOutPickRequest_base
{
public WmsOutPickRequest()
{
}
public WmsOutPickRequest(int id): base(id)
{
}
public WmsOutPickRequest(DataRow dr): base(dr)
{
}
public WmsOutPickRequest(string orderNo)
{
cmdParameters[0] = orderNo;
getModel(100);
}
public WmsOutPickRequest(int pickGroup, int pickStartOn, string dueDate)
{
cmdParameters[0] = pickGroup;
cmdParameters[1] = pickStartOn;
cmdParameters[2] = dueDate;
getModel(101);
}
protected override void getImp()
{
model_imp = new WmsOutPickRequest_Imp();
}
//begin cust db operation, query, excute sql etc.
public DataSet QueryByName(string name)
{
cmdParameters[0] = name;
return CustQuery(100);
}
///
/// 出库单详情(根据customer合并订单明细)
///
///
public DataSet getOutDetail()
{
cmdParameters[0] = this._pickOrderNo;
return CustQuery(200);
}
///
/// 出库单详情(根据货物id,批号合并原始单明细)
///
///
public DataSet getOutDetailMerged()
{
cmdParameters[0] = this._pickOrderNo;
return CustQuery(210);
}
private List _outDetails;
private string orderNo;
///
/// 查询订单出库详情
///
public List outDetails
{
get
{
if (_outDetails == null && !string.IsNullOrEmpty(_pickOrderNo))
{
_outDetails = new List();
cmdParameters[0] = this._pickOrderNo;
DataTable dt = CustQuery(201).Tables[0];
foreach (DataRow dr in dt.Rows)
{
_outDetails.Add(new WmsOutPickDetail(dr));
}
}
return _outDetails;
}
}
///
/// 查询订单出库详情
///
public List outDetailsMergedByOrderNo
{
get
{
if (_outDetails == null && !string.IsNullOrEmpty(_pickOrderNo))
{
_outDetails = new List();
DataTable dt = getOutDetail().Tables[0];
foreach (DataRow dr in dt.Rows)
{
_outDetails.Add(new WmsOutPickDetail(dr));
}
}
return _outDetails;
}
}
///
/// 获取出库订单
///
/// 订单类型
/// 订单状态
///
public DataSet getRequests(/*DeiNiu.Utils.enumOutStoreType orderType,*/DeiNiu.Utils.enumOutStockRequestStatus orderStatus)
{
// cmdParameters[0] = (int)orderType;
cmdParameters[0] = (int)orderStatus;
return CustQuery(300);
}
public DataTable getRequests( DeiNiu.Utils.enumOutStoreType orderType, DeiNiu.Utils.enumOutStockRequestStatus orderStatus)
{
cmdParameters[0] = (int)orderType;
cmdParameters[1] = (int)orderStatus;
return CustQuery(3001).Tables[0];
}
public DataTable getRequests(DeiNiu.Utils.enumOutStoreType orderType, int daysAfter )
{
cmdParameters[0] = (int)orderType;
cmdParameters[1] = daysAfter;
return CustQuery(3002).Tables[0];
}
///
/// 获取波次出库单
///
///
///
///
public List getRequests4Wave( )
{
/*if (WmsConstants.WAVE_LINE == -1 && string.IsNullOrEmpty(WmsConstants.WAVE_SALE))
{
return getRequestObjects(enumOutOrderType.拣货单, enumOutStockRequestStatus.等待波次);
}
*/
List lst = new List();
cmdParameters[1] = (int)enumOrderType.销售出库;
// cmdParameters[2] = (int)enumOutStockRequestStatus.等待波次;
WaveRule wr = new WaveRule().getCurrentActiveRule(enumWaveRuleType.DPS灯光波次);
cmdParameters[0] = wr;
DataTable dt;
if(WmsConstants.OUT_STOCK_BULK_PDA_SCAN) // t_wmsoutpickport 生成零货任务
{
dt = CustQuery(3011).Tables[0];
}
else
{// t_wmsoutpickport 不生成零货任务
dt = CustQuery(301).Tables[0];
}
return getObjs(dt);
}
public DataSet getRequests4DpsWave(enumOrderType orderType, WaveRule wr)
{
cmdParameters[0] = wr;
cmdParameters[1] = (int)orderType;
if (WmsConstants.OUT_STOCK_BULK_PDA_SCAN) // t_wmsoutpickport 生成零货任务
{
return CustQuery(3011) ;
}
else
{// t_wmsoutpickport 不生成零货任务
return CustQuery(3012);
}
}
///
/// 获取分区出库单
///
///
public List getRequests4PartWave(enumOrderType orderType,int part)
{
List lst = new List();
WaveRule wr = new WaveRule().getCurrentActiveRule(enumWaveRuleType.DPS灯光波次);
cmdParameters[2] = wr;
cmdParameters[0] = (int)orderType;
cmdParameters[1] = part;
DataTable dt = CustQuery(303).Tables[0];
return getObjs(dt);
}
public List getRecords4PartWave(enumOrderType orderType)
{
List lst = new List();
DataTable dt0 =getFreeParts();
WaveRule wr = new WaveRule().getCurrentActiveRule(enumWaveRuleType.DPS灯光波次);
foreach (DataRow dr0 in dt0.Rows)
{
cmdParameters[0] = (int)orderType;
cmdParameters[1] = dr0["id"].ToString();
cmdParameters[2] = wr;
lst.Add(CustQuery(305).Tables[0].Copy());
}
return lst;
}
public DataTable getRecords4PickOrder(string pikciOrderNo,int partion)
{
// List lst = new List();
cmdParameters[0] = pikciOrderNo;
cmdParameters[1] = partion;
return CustQuery(308).Tables[0] ;
}
public List getRequests4PartWave(enumOrderType orderType)
{
List lst = new List();
DataTable dt0 =getFreeParts();
WaveRule wr = new WaveRule().getCurrentActiveRule(enumWaveRuleType.DPS灯光波次);
foreach (DataRow dr0 in dt0.Rows)
{
cmdParameters[0] = orderType;
cmdParameters[1] = dr0["id"].ToString();
cmdParameters[2] = wr ;
DataTable dt = CustQuery(303).Tables[0];
foreach (DataRow dr in dt.Rows)
{
lst.Add(new WmsOutPickRequest(dr));
}
}
return lst;
}
public DataTable getFreeParts()
{
return CustQuery(304).Tables[0];
}
///
/// 获取出库订单
///
/// 订单类型
/// 订单状态
///
public List getRequestObjects(/*DeiNiu.Utils.enumOutStoreType orderType,*/ DeiNiu.Utils.enumOutStockRequestStatus orderStatus)
// , int lines=-1,string sales="")
{
return getObjs( getRequests(/*orderType,*/orderStatus).Tables[0]);
}
public List getRequestObjects( DeiNiu.Utils.enumOutStoreType orderType, DeiNiu.Utils.enumOutStockRequestStatus orderStatus)
{
return getObjs(getRequests( orderType, orderStatus) );
}
public List getObjs(DataTable dtPickOrders)
{
List lst = new List();
foreach (DataRow dr in dtPickOrders.Rows)
{
lst.Add(new WmsOutPickRequest(dr));
}
return lst;
}
///
/// 进入波次,更新零货捡货状态
///
///
///
public void updateBulkPickStatus(string pickOrderNo,enumOutStockPickStatus state,int operater)
{
cmdParameters[0] = pickOrderNo;
cmdParameters[1] = (int)state;
cmdParameters[2] = operater;
CustOper(410);
}
///
/// 进入分区波次,更新零货捡货状态
///
///
///
///
public void updatePartBulkPickStatus(string pickOrderNo,int part, enumOutStockPickStatus state, int operater)
{
cmdParameters[0] = pickOrderNo;
cmdParameters[1] = part;
cmdParameters[2] = (int)state;
cmdParameters[3] = operater;
CustOper(411);
}
///
/// 更新整货捡货状态
/// 需要事物
///
///
///
public int updateBatchPickStatus(string pickOrderNo, enumOutStockPickStatus state,int operater)
{
cmdParameters[0] = pickOrderNo;
cmdParameters[1] = (int)state;
cmdParameters[2] = operater;
return CustOper(420);
}
///
/// 更新整货捡货、复核状态
/// 完成订单明细的全部拣货、复核动作时执行此方法
/// 需要事物
///
///
///
///
///
///
///
public int updateBatchOrderStatus(string pickOrderNo, enumOutStockRequestStatus orderState, enumOutStockDetailStatus detailState, int operater)
{
cmdParameters[0] = pickOrderNo;
cmdParameters[1] = (int)orderState;
cmdParameters[2] = (int)detailState;
cmdParameters[3] = operater;
return CustOper(430);
}
///
/// 波次完成,更新bulkPickState
/// 全是零货的订单状态 state一并更新
/// 有整货的,待整货完成分拣后再更新
///
///
///
public bool completeWaveBulkPickStatus(string waveNo, int operater)
{
cmdParameters[0] = waveNo;
cmdParameters[1] = operater;
CustOper(400);
CustOper(399);
return true;
}
public int fixMore()
{
return CustOper(399);
}
///
/// 分区分拣结束,判断分区的订单不存在未拣的部分,则更新pickdetail 和pickrequest bulkPikckStatus
///
///
///
///
public bool completePartBulkPickStatus(int part, int operater)
{
cmdParameters[0] = part;
cmdParameters[1] = operater;
CustOper(400);
return true;
}
///
/// 单个订单零货分拣完成
///
///
///
///
public bool completeBulkPickStatus(string pickRequestNo, int operater)
{
cmdParameters[0] = pickRequestNo;
cmdParameters[1] = operater;
CustOper(400);
return true;
}
public bool canNewWave() {
//int cnt1 = CustQuery(500).Tables[0].Rows.Count; //判断是否有正在拣选数据
//int cnt2 = CustQuery(550).Tables[0].Rows.Count;//判断是否有待拣选数据
return CustQuery(500).Tables[0].Rows.Count == 0 && CustQuery(550).Tables[0].Rows.Count > 0;
}
public DataSet getPickDetailByOrder(string orderNo, bool isPickDetail)
{
cmdParameters[0] = isPickDetail ;
cmdParameters[1] = orderNo;
return CustQuery(600);
}
///
/// pick details by wave order
/// including batch and bulk
///
///
///
public DataSet getPickDetailByWaveOrder(string waveOrder)
{
cmdParameters[0] = waveOrder;
return CustQuery(700);
}
///
/// current bulk details
///
///
public DataSet getBulkDetailInCurrentWave()
{
return CustQuery(710);
}
///
/// partion bulk details
///
///
public DataTable getPartionBulkDetailInCurrentWave()
{
return CustQuery(720).Tables[0];
}
///
/// pick details by wave order
/// including bulk details in current wave
///
///
/// 2 tables, first for pick details , second for current bulk detail
public DataSet getPickDetailByWaveOrderWithCurrentBulks(string waveOrder)
{
DataSet ds = getPickDetailByWaveOrder(waveOrder);
ds.Tables.Add(getBulkDetailInCurrentWave().Tables[0]);
return ds;
}
///
/// 取待审核、播种订单列表
///
///
///
public DataSet getPickRequest4BulkVailidate(object desk)
{
cmdParameters[0] = desk;
return CustQuery(800);
}
public DataSet getPickRequest4BulkSeedsVailidate(int desk,enumOutStockRequestStatus seedsStatus,string seedsNo="")
{
cmdParameters[0] = desk;
cmdParameters[1] = seedsStatus;
cmdParameters[2] = seedsNo;
return CustQuery(820);
}
public DataSet getOutRequestDetail(string pickOrderNo)
{
cmdParameters[0] = pickOrderNo;
return CustQuery(810);
}
public DataTable getSeedsGoods(string seedsNo)
{
cmdParameters[0] = seedsNo;
return CustQuery(830).Tables[0];
}
///
/// 生成波次后,保存相关出库单的明细到临时表 for 复核
///
///
///
///
public int saveTempData4Validation(string waveNo)
{
cmdParameters[0] = waveNo;
return CustOper(900);
// return 1;
}
public int saveTempData4Validation(string waveNo,string pickOrderNo)
{
cmdParameters[0] = waveNo;
cmdParameters[1] = pickOrderNo;
return CustOper(9001);
}
public List getRequest4StockOut(enumOutStockRequestStatus status = enumOutStockRequestStatus.待定位)
{
cmdParameters[0] = status;
return getObjs(CustQuery(30001).Tables[0]);
}
///
/// 生成分区波次后,保存相关出库单的明细到临时表 for 复核
///
///
///
///
public int savePartionTempData4Validation(string pickOrderNo)
{
cmdParameters[0] = pickOrderNo;
return CustOper(901);
}
///
///
///
///
///
public DataTable getValidationDetail(string pickOrder)
{
cmdParameters[0] = pickOrder;
return CustQuery(1000).Tables[0];
}
///
/// pick details by pickOrderNo
/// including batch and bulk
///
///
///
public DataSet getPickDetailByPickOrderNo(string pickOrderNo)
{
cmdParameters[0] = pickOrderNo;
return CustQuery(1100);
}
public DataSet getPickDetailBySeedsPickOrderNo(string seedsPickNo,int skuId)
{
cmdParameters[0] = seedsPickNo;
cmdParameters[1] = skuId;
return CustQuery(11001);
}
///
/// to light labels for pick orders by seedPickNo ,goodsId, batch
///
///
///
///
///
public DataSet getSeedsLightData(string seedsPickNo,string goodsId,string batch)
{
cmdParameters[0] = seedsPickNo;
cmdParameters[1] = goodsId;
cmdParameters[2] = batch;
return CustQuery(1101);
}
public int getUnSeedsCnt(string seedsPickNo, string goodsId, string batch)
{
cmdParameters[0] = seedsPickNo;
cmdParameters[1] = goodsId;
cmdParameters[2] = batch;
string tmp = CustQuery(1102).Tables[0].Rows[0][0].ToString();
return tmp != string.Empty
? Convert.ToInt32(tmp)
: 0;
}
public int getUnSeedsCnt(string seedsPickNo,int labId )
{
cmdParameters[0] = seedsPickNo;
cmdParameters[1] = labId;
string tmp = CustQuery(1103).Tables[0].Rows[0][0].ToString();
return tmp != string.Empty
? Convert.ToInt32(tmp)
: 0;
}
public int getUnSeedsCnt(string seedsPickNo )
{
cmdParameters[0] = seedsPickNo;
string tmp = CustQuery(1105).Tables[0].Rows[0][0].ToString();
return tmp != string.Empty
? Convert.ToInt32(tmp)
: 0;
}
public DataTable getNewSeedDetails(int groupMark)
{
cmdParameters[0] = groupMark;
cmdParameters[1] = (int)enumOutStockRequestStatus.待定位;
return CustQuery(2600).Tables[0];
}
public DataTable getSeedsData(string seedsPickNo, int labId )
{
cmdParameters[0] = seedsPickNo;
cmdParameters[1] = labId;
return CustQuery(1104).Tables[0] ;
}
///
/// delete the tmp data by pickOrderNo
///
///
public void deleteTempValidationData(string pickOrderNo)
{
cmdParameters[0] = pickOrderNo;
CustOper(1200);
}
///
/// 待处理零货复核异常
///
///
///
public DataSet getBulkValidationException(enumOutStockPickStatus status)
{
cmdParameters[0] = (int)status;
return CustQuery(1300);
}
///
///已处理收货异常
///
///
///
public DataSet getBulkValidationExceptionSolutions(object desk =null)
{
cmdParameters[0] = desk;
return CustQuery(1400);
}
///
/// get batch pickorders
///
///
///
///
public DataSet getBatchOutPickOrders(enumOutStockRequestStatus status,enumOutStockPickStatus batchPickStatus1 ,enumOutStockPickStatus batchPickStatus2)
{
cmdParameters[0] = (int)status;
cmdParameters[1] = (int)batchPickStatus1;
cmdParameters[2] = (int)batchPickStatus2;
return CustQuery(1500);
}
///
/// 查当日(未完成补货的)补库单
/// 补货还未入零库(enumOutStockPickStatus.复核完成)
///
///
///
///
public DataTable getRepRequestDetailsLessThan(enumOutStockPickStatus pickStatus = enumOutStockPickStatus.复核完成)
{
List requests = new List();
cmdParameters[0] = (int)pickStatus;
DataTable dt = CustQuery(1510).Tables[0];
return dt;
//foreach (DataRow dr in dt.Rows)
//{
// requests.Add(new WmsOutPickDetail(dr));
//}
//return requests;
}
///
/// get batch pickorder details
///
///
///
///
///
public DataSet getBatchOutPickOrderDetails(string pickOrderNo, enumOutStockDetailStatus status, enumOutStockPickStatus batchPickStatus)
{
cmdParameters[0] = (int)status;
cmdParameters[1] = (int)batchPickStatus;
cmdParameters[2] = pickOrderNo;
return CustQuery(1700);
}
///
/// pick details for batch pick order
///
///
///
///
///
public DataSet getBatchOutPickOrderPickDetails(string pickOrderNo, enumOutStockRequestStatus status, enumOutStockPickStatus batchPickStatus)
{
cmdParameters[0] = (int)status;
cmdParameters[1] = (int)batchPickStatus;
cmdParameters[2] = pickOrderNo;
return CustQuery(1600);
}
///
/// pick details for batch pick order by pickorderNo
///
///
///
public DataSet getBatchOutPickOrderPickDetails(string pickOrderNo)
{
cmdParameters[0] = pickOrderNo;
return CustQuery(1610);
}
public DataTable getPickOrderTmsInfo(string pickOrderNo)
{
cmdParameters[0] = pickOrderNo;
return CustQuery(1620).Tables[0];
}
///
/// 取出库货位、数量详细
///
///
///
public DataTable getPickDetail (int stockRecordId)
{
cmdParameters[0] = stockRecordId;
return CustQuery(1900).Tables[0];
}
///
/// 根据捡货状态取捡货明细
///
///
///
public DataTable getBatchPickDetails(enumPickState state)
{
cmdParameters[0] = (int)state;
return CustQuery(2000).Tables[0];
}
///
/// pickorders that ready for validation
/// for wince Only
///
///
///
public DataTable getBatchPickOrders4Validation()
{
return CustQuery(2100).Tables[0];
}
///
/// batch pickorder detail
/// for wince Only
///
///
///
public DataTable getBatchPickOrderDetail4Wince(string pickOrderNo)
{
cmdParameters[0] = pickOrderNo;
return CustQuery(2200).Tables[0];
}
///
/// 取整货补货出库分拣明细
///
///
///
/// 默认当天和昨天两天的
///
public DataTable getBatchPickOrderRepDetail(string flowNo,enumOrderType orderType, enumPickState pickState,string orderDate = "",int operId=0)
{
cmdParameters[0] = (int)orderType;
cmdParameters[1] = (int)pickState;
cmdParameters[2] = orderDate;
cmdParameters[3] = flowNo;
cmdParameters[4] = operId;
return CustQuery(2300).Tables[0];
}
public bool updatePriority(string orders, int priority,int operId)
{
cmdParameters[0] = orders;
cmdParameters[1] = priority;
cmdParameters[2] = operId;
return CustOper(2400) > 0;
}
///
/// 分区完成器id列表
///
///
public DataTable getPartsFinishIds()
{
return CustQuery(306).Tables[0];
}
///
/// 所有可用分区列表
///
///
public DataTable getLightPartions()
{
return CustQuery(307).Tables[0];
}
public DataTable getOrderPickList(string orderNo, int partion)
{
cmdParameters[0] = orderNo;
cmdParameters[1] = partion;
return CustQuery(309).Tables[0];
}
public DataTable getBatchOnlyRequests(enumOutStockPickStatus batchPickState)
{
cmdParameters[0] = (int)batchPickState;
return CustQuery(2500).Tables[0];
}
public void updateErpSale_deng(bool isOn)
{
cmdParameters[0] = pickOrderNo;
DataTable dt = CustQuery(2600).Tables[0];
foreach (DataRow dr in dt.Rows)
{
int id = Convert.ToInt32(dr["id"].ToString());
Erp_sale esd = new Erp_sale(id);
if (isOn)
{
esd.liangdeng = true;
}
esd.Update();
break;
}
}
public bool setSeedsNo(string seedsPickOrderNo)
{
cmdParameters[0] = pickOrderNo;
cmdParameters[1] = seedsPickOrderNo;
return CustOper(2700)>0;
}
public bool updateOrderStatus(string pickOrderNo, enumOutStockRequestStatus orderState, enumOutStockDetailStatus detailState, int operater)
{
cmdParameters[0] = pickOrderNo;
cmdParameters[1] = (int)orderState;
cmdParameters[2] = (int)detailState;
cmdParameters[3] = operater;
return CustOper(431)>0;
}
public List getRequestsReady4Validation()
{
return getObjs(CustQuery(2800).Tables[0]);
}
public List getRequestsByTransNo(string transNo)
{
return getObjs(getReqDtByTransNo( transNo));
}
public DataTable getReqDtByTransNo( string transNo)
{
cmdParameters[0] = transNo;
return CustQuery(2900).Tables[0] ;
}
public string createLoadTruckJob(int operId)
{
if (!string.IsNullOrEmpty(loadTruckJob))
{
return loadTruckJob;
}
WmsFlow wmsflow = new WmsFlow();
wmsflow.operater = operId;
wmsflow.orderNo = pickOrderNo;
wmsflow.flowNo = pickOrderNo;
wmsflow.type = (int)EnumFlowTaskType.装车运输;
wmsflow.typeName = EnumFlowTaskType.装车运输.ToString();
wmsflow.task = Util.getOrderNo(enumCreateOrderType.pickJobNo, getNextSeq(enumCreateOrderType.pickJobNo));
wmsflow.taskCnt = 0;
using (TransactionScope scope = new TransactionScope())
{
wmsflow.Add();
loadTruckJob = wmsflow.task;
operater = operId;
Update();
scope.Complete();
}
return wmsflow.task;
}
public void finishAllFlowTasks(string pickOrderNo)
{
cmdParameters[0] = pickOrderNo;
CustOper(3000);
}
}
}