ldj/WcfService1/BLL/lWmsOrderRequest.cs

286 lines
8.1 KiB
C#

/// <summary>
///LOGIC CLASS FOR TABLE t_wmsOrderRequest
///By wm with codesmith.
///on 07/07/2020
/// </summary>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DeiNiu.wms.Data.Model;
using System.Data;
using System.Transactions;
using DeiNiu.Wcf;
using DeiNiu.Utils;
namespace DeiNiu.wms.Logical
{
[Serializable]
public class lWmsOrderRequest :lbase
{
WmsOrderRequest _obj;
public lWmsOrderRequest()
{
initialize();
}
public WmsOrderRequest getWmsOrderRequest
{
get
{
if (_obj == null)
{
_obj = new WmsOrderRequest();
}
_obj.operater = operId;
return _obj;
}
}
public lWmsOrderRequest(int operId)
: base(operId)
{
initialize();
}
/// <summary>
/// get all data
/// </summary>
public DataSet getAllData()
{
return _obj.Query();
}
/// <summary>
/// get all data
/// </summary>
public DataSet getAllActiveData()
{
return _obj.QueryActived();
}
/// <summary>
/// get a record by id
/// </summary>
public void initialize(int id)
{
_obj = id != 0 ? new WmsOrderRequest(id) : new WmsOrderRequest();
}
/// <summary>
/// get a record by id 0
/// </summary>
public void initialize()
{
initialize(0);
}
/// <summary>
/// get a record by id
/// </summary>
public void initialize(DataRow dr)
{
_obj = new WmsOrderRequest(dr);
}
protected override DeiNiu.Data.BaseObject.BaseModel getModel()
{
return _obj;
}
//begin cust db operation, query, excute sql etc.
internal int add(WmsOrderRequest wmsOrder)
{
enumCreateOrderType type = enumCreateOrderType.obsolete;
// enumWhType toWhtype = enumWhType.报废库;
switch ((enumOrderType)wmsOrder.orderType)
{
case enumOrderType.:
type = enumCreateOrderType.obsolete;
// toWhtype = enumWhType.报废库;
break;
case enumOrderType.:
type = enumCreateOrderType.transferInternal;
break;
case enumOrderType.:
type = enumCreateOrderType.transferOutside;
break;
case enumOrderType.退:
type = enumCreateOrderType.returnVender;
break;
}
wmsOrder.orderNo = Util.getOrderNo(type, new WmsOrderRequest().getNextSeq(type));
return wmsOrder.Add();
}
/// <summary>
/// update in a transaction scrop
/// </summary>
public void update()
{
if (valid())
{
using (TransactionScope scope = new TransactionScope())
{
//Node tmp = new Node();
//tmp.parentid = 1;
//tmp.name = "test trans" + DateTime.Now;
//tmp.description = "this is for transTest";
//tmp.Add();
_obj.Update();
scope.Complete();
}
}
}
private bool valid()
{
return true;
}
internal DataTable getDetail(string orderNo)
{
return getWmsOrderRequest.getDetail(orderNo);
}
internal int addDetail( enumOrderType orderType,Wcf.WcfWmsOrderDetail[] wcfDetails)
{
/*
enumWhType whType = enumWhType.合格库, toWhType = enumWhType.报废库;
if (wcfDetails.Length > 0)
{
switch (orderType)
{
case enumOrderType.报废申请:
whType = enumWhType.合格库;
toWhType = enumWhType.报废库;
break;
case enumOrderType.库区转移:
whType = enumWhType.合格库;
toWhType = enumWhType.报废库;
break;
}
}
*/
foreach (WcfWmsOrderDetail wd in wcfDetails)
{
// wd.whtype = (int)whType;
// wd.toWhType =(int) toWhType;
wd.state = 0;
wd.getDbObject().Add();
}
return wcfDetails.Length;
}
internal int deleteOrder(string orderNo)
{
int rt = 0;
WmsOrderRequest order = new WmsOrderRequest(orderNo);
if(order.state ==(int)enumOrderStatus. || order.state ==(int)enumOrderStatus.)
rt= getWmsOrderRequest.DeleteOrder(orderNo);
return rt;
}
internal int approveOrder(string orderNo,int operId)
{
int rt = 0;
WmsOrderRequest order = new WmsOrderRequest(orderNo);
// to create tasks.
using (TransactionScope scope = new TransactionScope())
{
order.state = (int)enumOrderStatus.;
order.approvedBy = operId;
order.approveDate = order.getDateTime();
order.Update();
enumOutStoreType outStoreType =Util.getOutStoreTypeByOrderType( order.orderType);
enumStockRecordType recType = Util.getStockRecordType((int)outStoreType);
WmsWave ww = new WmsWave();
ww.waveNo = Util.getOrderNo(enumCreateOrderType.waveOrder, _obj.getNextSeq(enumCreateOrderType.waveOrder)); ;
ww.operater = this.operId;
ww.type = (int)recType;
ww.Add();
WmsFlow wf = new WmsFlow();
wf.orderNo = ww.waveNo;
wf.task = Util.getOrderNo(enumCreateOrderType.pickJobNo, _obj.getNextSeq(enumCreateOrderType.pickJobNo));
wf.type = (int)Util.getTaskType((int)recType); ;
wf.typeName =recType.ToString();
// wf.taskPartion = order. //TODO: set task partion
wf.Add();
DataTable dt= order.getDetail(order.orderNo);
foreach (DataRow dr in dt.Rows)
{
WmsOrderDetail od = new WmsOrderDetail(dr);
WmsLocation loc = new WmsLocation(od.locationId);
WmsStock stk = new WmsStock(od.locationId,od.skuId);
stk.countOuting += od.count;
stk.state = (int)enumStockLocationStatus.;
loc.state = (int)enumStockLocationStatus.;
stk.Update();
loc.Update();
WmsStockRecord sr = new WmsStockRecord(dr);
sr.rectype =(int)recType;
sr.orderDetailId = od.ID;
sr.countOuting = od.count;
sr.count = 0;
sr.Add();
WmsOutPickPort wp = new WmsOutPickPort(dr);
wp.jobNo = wf.task;
wp.pickOrderNo = order.orderNo;
wp.waveOrder = ww.waveNo;
wp.volType = loc.volType;
wp.tranArea = order.toWhType;
wp.recordId = sr.ID;
wp.recType = (int)recType;
wp.Add();
}
scope.Complete();
}
return rt;
}
}
}