ldj/WcfService1/BLL/lTmsTranRequest.cs

554 lines
17 KiB
C#

/// <summary>
///LOGIC CLASS FOR TABLE t_tmsTranRequest
///By wm with codesmith.
///on 07/26/2017
/// </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.Utils;
namespace DeiNiu.wms.Logical
{
[Serializable]
public class lTmsTranRequest :lbase
{
TmsTranRequest _obj;
public lTmsTranRequest()
{
initialize();
}
public lTmsTranRequest(int operId)
: base(operId)
{
initialize();
}
public TmsTranRequest getTmsTranRequest
{
get
{
return _obj;
}
}
/// <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 TmsTranRequest(id) : new TmsTranRequest();
}
/// <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 TmsTranRequest(dr);
}
protected override DeiNiu.Data.BaseObject.BaseModel getModel()
{
return _obj;
}
//begin cust db operation, query, excute sql etc.
/// <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 DataSet queryPickRequests(string query, int rownumStart, int rownumEnd)
{
return _obj.queryPickRequests(query, rownumStart, rownumEnd);
}
internal DataTable queryPickRequests4Report(string pickOrderNo)
{
DataTable dt = _obj.queryPickRequests4Report(pickOrderNo);
WmsOutPickRequest wpr = new WmsOutPickRequest(pickOrderNo);
if (string.IsNullOrEmpty(wpr.invoiceNo))
{
foreach (DataRow dr1 in dt.Rows)
{
dr1.BeginEdit();
wpr.invoiceNo = Utils.Util.getOrderNo(enumCreateOrderType.pickOutInvoice, wpr.getNextSeq(enumCreateOrderType.pickOutInvoice));
wpr.invoicedBy = LoginInfo.UserId;
dr1["invoiceNo"] = wpr.invoiceNo;
dr1["invoicedBy"] = LoginInfo.UserId;
dr1.EndEdit();
}
}
return dt;
}
internal DataTable getFreeViechles()
{
return new TmsViechle().queryByStatus(Utils.enumViechleStatus.,Utils.enumViechleTransStatus. );
//return _obj.getViechles(Utils.enumViechleStatus.可用, Utils.enumTranStatus.配送结束);
}
internal DataTable getLatestPickRequestsByViechole(string plateId)
{
return getTmsTranRequest.getLatestPickRequestsByViechole(plateId);
}
/*
internal string creatTrans(string[] pickOrders, string orderNo, int thirdPart, int status, int lineId, string viechle, int tranType, int person, string contact, string phone, string description)
{
Utils.enumTranType tType = (enumTranType)(tranType);
TmsViechle tv = new TmsViechle(viechle);
if (tType == enumTranType.自营配送 && (tv.state == (int)Utils.enumViechleStatus.不可用 || tv.transState !=(int) Utils.enumViechleTransStatus.空闲 ))
{
return viechle+ " 车辆不可用";
}
string tranOrder = string.IsNullOrEmpty(orderNo) ? Util.getOrderNo(enumCreateOrderType.transOrder, _obj.getNextSeq()) : orderNo;
TmsTranRequest tmr = new TmsTranRequest();
tmr.transNo = tranOrder;
tmr.tranType = tranType;
tmr.lineId = lineId;
tmr.viechleNo = viechle;
tmr.contact = contact;
tmr.phone = phone;
tmr.driver = person;
tmr.thirdPart = thirdPart;
tmr.description = description;
tmr.state = status;
tmr.operater = operId;
int i = 0;
try
{
using (TransactionScope scope = new TransactionScope())
{
tmr.Add();
foreach (string pickOrder in pickOrders)
{
WmsOutPickRequest op = new WmsOutPickRequest(pickOrder);
if (op.state >= (int)enumOutStockRequestStatus.配送中)
{
continue;
}
op.tranOrderNo = tranOrder;
op.state = (int)enumOutStockRequestStatus.配送中;
op.operater = operId;
op.Update();
TmsTranRequestDetail td = new TmsTranRequestDetail();
td.pickRequest = pickOrder;
td.transNo = tranOrder;
td.operater = operId;
td.Add();
i++;
}
if (i > 0)
{
// tv.state = (int)Utils.enumViechleStatus.不可用;
tv.transState = (int)Utils.enumViechleTransStatus.装车;
tv.operater = operId;
tv.transOrder = tranOrder;
tv.Update();
}
else
{
return "创建失败";
}
scope.Complete();
}
return "创建成功";
}
catch
{
return "创建失败";
}
}
*/
internal string creatTrans(string[] pickOrders, TmsTranRequest tmsTranRequest)
{
Utils.enumTranType tType = (enumTranType)(tmsTranRequest.tranType);
TmsViechle tv = new TmsViechle(tmsTranRequest.viechleNo);
if (tType == enumTranType. && (tv.state == (int)Utils.enumViechleStatus. || tv.transState != (int)Utils.enumViechleTransStatus.))
{
return tmsTranRequest.viechleNo + " 车辆不可用";
}
string tranOrder = string.IsNullOrEmpty(tmsTranRequest.transNo) ? Util.getOrderNo(enumCreateOrderType.transOrder, _obj.getNextSeq(enumCreateOrderType.transOrder)) : tmsTranRequest.transNo;
tmsTranRequest.transNo = tranOrder;
tmsTranRequest.operater = operId;
int i = 0;
try
{
using (TransactionScope scope = new TransactionScope())
{
tmsTranRequest.Add();
foreach (string pickOrder in pickOrders)
{
WmsOutPickRequest op = new WmsOutPickRequest(pickOrder);
if (op.state >= (int)enumOutStockRequestStatus.)
{
continue;
}
op.state = (int)enumOutStockRequestStatus.;
op.operater = operId;
op.transNo = tranOrder;
op.Update();
TmsTranRequestDetail td = new TmsTranRequestDetail();
td.pickOrderNo = pickOrder;
td.transNo = tranOrder;
td.operater = operId;
td.Add();
i++;
}
if (i > 0)
{
// tv.state = (int)Utils.enumViechleStatus.不可用;
tv.transState = (int)Utils.enumViechleTransStatus.;
tv.operater = operId;
tv.transOrder = tranOrder;
tv.Update();
}
else
{
return "创建失败";
}
scope.Complete();
}
return "创建成功";
}
catch
{
return "创建失败";
}
}
public string createSimpleTran(List<WmsOutPickRequest> pickOrders, WmsPlate plate)
{
TmsTranRequest tmsTranRequest = new TmsTranRequest();
tmsTranRequest.transNo = string.IsNullOrEmpty(plate.transNo) ? Util.getOrderNo(enumCreateOrderType.transOrder, _obj.getNextSeq(enumCreateOrderType.transOrder)) : plate.transNo;
tmsTranRequest.operater = operId;
tmsTranRequest.viechleNo = plate.plateId;
int i = 0;
try
{
using (TransactionScope scope = new TransactionScope())
{
tmsTranRequest.Add();
foreach (WmsOutPickRequest op in pickOrders)
{
op.operater = operId;
op.transNo = tmsTranRequest.transNo;
op.Update();
TmsTranRequestDetail td = new TmsTranRequestDetail();
td.pickOrderNo = op.pickOrderNo;
td.transNo = tmsTranRequest.transNo;
td.operater = operId;
td.Add();
i++;
}
//TODO: 创建装车复核任务
if (!WmsConstants.AUTO_LOAD_TRUCK_VALID //&& plate.state != (int)enumPlateStatus.待复核
// && (req.batchPickState > -1 && req.batchCheckedby == 0|| req.bulkPickState > -1 && req.bulkCheckedby == 0)
)
{
// WmsFlow vFlow = new WmsFlow(tmsTranRequest.transNo, tmsTranRequest.viechleNo, enumFlowTaskStatus.未开始, EnumFlowTaskType.出库装车复核);
// if (vFlow.ID == 0)
{
WmsFlow vFlow = new WmsFlow();
vFlow.operater = operId;
vFlow.orderNo = tmsTranRequest.transNo;
vFlow.flowNo = tmsTranRequest.viechleNo;
vFlow.type = (int)EnumFlowTaskType.;
vFlow.typeName = EnumFlowTaskType..ToString();
vFlow.task = tmsTranRequest.transNo;
vFlow.taskCnt = 1;
vFlow.Add();
plate.state =(int) enumPlateStatus.;
plate.Update();
}
// else
{
// vFlow.taskCnt ++;
// vFlow.Update();
}
}
if (i > 0)
{
//plate.transNo = tmsTranRequest.transNo;
}
else
{
return "";
}
scope.Complete();
}
return plate.transNo;
}
catch
{
return "";
}
}
internal bool updateTranStatus(string transOrder, int status, string mem)
{
try
{
using (TransactionScope scope = new TransactionScope())
{
TmsTranRequest tr = new TmsTranRequest(transOrder);
tr.state = status;
tr.operater = operId;
tr.description += mem;
tr.description = tr.description.Length > 200 ? tr.description.Substring(0, 200) : tr.description;
tr.Update() ;
//update viechle
if (!string.IsNullOrEmpty(tr.viechleNo))
{
TmsViechle tv = new TmsViechle(tr.viechleNo);
tv.transState = (int)enumViechleTransStatus.;
tv.operater = operId;
tv.Update();
}
scope.Complete();
}
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 从零库出库集货区取走打包的零货
/// </summary>
/// <param name="stockId"></param>
/// <returns></returns>
internal bool pickBulks(string tranNo,int stockId)
{
TmsStock ts = new TmsStock(stockId);
WmsStockRecord wsr = new WmsStockRecord();
wsr.orderNo = tranNo;
wsr.locationId = ts.locationId;
wsr.operater = operId;
wsr.count = ts.count;
wsr.goodsId = "打包散货";
wsr.rectype = (int)enumStockRecordType.;
try
{
using (TransactionScope scope = new TransactionScope())
{
ts.Delete();
wsr.Add();
scope.Complete();
}
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 集货完毕,装车
/// </summary>
/// <param name="stockId"></param>
/// <returns></returns>
internal string loadTrucks(string transNo, string pickOrderNo, int tranDetailId)
{
TmsTranRequestDetail trd = new TmsTranRequestDetail(tranDetailId);
int leftunLoadCnt = 0;
if (trd.transNo.Equals(transNo) && trd.pickOrderNo.Equals(pickOrderNo) && trd.state ==(int)enumTranDetailStatus.)
{
//检查是否有未集货零货
int leftBulksCnt = _obj.getPickRequestBulksCount(pickOrderNo);
if (leftunLoadCnt > 0)
{
return pickOrderNo + "有未集货打包零货,请先完成集货";
}
trd.state = (int)enumTranDetailStatus.;
trd.operater = operId;
leftunLoadCnt = _obj.getTransRequestsDetailCount(transNo,enumTranDetailStatus.);
if (leftunLoadCnt == 1)
{
_obj = new TmsTranRequest(transNo);
}
}
else
{
return "装车失败,数据不符";
}
try
{
using (TransactionScope scope = new TransactionScope())
{
trd.Update();
if (leftunLoadCnt == 1)
{
_obj.state = (int)enumTranStatus.;
_obj.operater = operId;
_obj.Update();
}
scope.Complete();
}
return "";
}
catch
{
return "";
}
}
internal int updatePickInvoice(string pickOrderNo, string invoiceNo)
{
WmsOutPickRequest wpr = new WmsOutPickRequest(pickOrderNo);
wpr.invoiceNo = invoiceNo;
wpr.invoicePrintCnt++;
wpr.invoicedBy = LoginInfo.UserId;
return wpr.Update();
}
}
}