/// ///LOGIC CLASS FOR TABLE t_tmsTranRequest ///By wm with codesmith. ///on 07/26/2017 /// 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; } } /// /// get all data /// public DataSet getAllData() { return _obj.Query(); } /// /// get all data /// public DataSet getAllActiveData() { return _obj.QueryActived(); } /// /// get a record by id /// public void initialize(int id) { _obj = id != 0 ? new TmsTranRequest(id) : new TmsTranRequest(); } /// /// get a record by id 0 /// public void initialize() { initialize(0); } /// /// get a record by id /// 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. /// /// update in a transaction scrop /// 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 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++; } 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; } } /// /// 从零库出库集货区取走打包的零货 /// /// /// 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; } } /// /// 集货完毕,装车 /// /// /// 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(); } } }