/// ///INTERFACE CLASS FOR TABLE t_wmsPlate ///By wm ///on 05/22/2020 /// using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using DeiNiu.Utils; namespace DeiNiu.wms.Data.Model { [Serializable] public class WmsPlate : WmsPlate_base { public WmsPlate() { } public WmsPlate(string plateId) { cmdParameters[0] = plateId; getModel(100); } public WmsPlate(int id) : base(id) { } public WmsPlate(DataRow dr) : base(dr) { } protected override void getImp() { model_imp = new WmsPlate_Imp(); } //begin cust db operation, query, excute sql etc. //begin cust db operation, query, excute sql etc. public DataTable getPlateById(string plateid) { cmdParameters[0] = plateid; return CustQuery(100).Tables[0]; } public bool deleteByPlateId(string plateid) { cmdParameters[0] = plateid; return CustOper(200) > 0; } public DataSet getPlateWaves() { return CustQuery(300); } public DataTable getPlatesByWave(string waveOrder, int color) { cmdParameters[0] = waveOrder; if (color > 0) { cmdParameters[1] = color; return CustQuery(500).Tables[0]; } else return CustQuery(400).Tables[0]; ; } public DataTable getPartionPickDetailByPlateId(string plateid) { cmdParameters[0] = plateid; return CustQuery(101).Tables[0]; } public DataTable getPlatesByPickOrder(string pickOrderNo) { cmdParameters[0] = pickOrderNo; return CustQuery(600).Tables[0]; } public void setFree() { this.waveNo = ""; this.preInOrderNo = ""; this.pickOrderNo = ""; this.customerId = ""; this.transNo = ""; this.partion = 0; this.locationId = ""; this.terminal = 0; this.state = 0; this.jobNo = ""; this.inPlate = ""; Update(); } public WmsPlate getParentPlate(string plateId) { cmdParameters[0] = plateId; DataTable dt = CustQuery(700).Tables[0]; foreach (DataRow dr in dt.Rows) { return new WmsPlate(dr); } return new WmsPlate(); } /*public List getSubPlates(string plateId) { List lst = new List(); cmdParameters[0] = plateId; DataTable dt = CustQuery(800).Tables[0]; foreach (DataRow dr in dt.Rows) { lst.Add(new WmsPlate(dr)); } return lst; } */ public List getSubPlateIds(string plateId) { List lst = new List(); cmdParameters[0] = plateId; DataTable dt = CustQuery(800).Tables[0]; foreach (DataRow dr in dt.Rows) { lst.Add(dr["subPlateId"].ToString()); } return lst; } public List getSubPlates(string plateId) { List lstp = new List(); cmdParameters[0] = plateId; DataTable dt = CustQuery(1000).Tables[0]; foreach (DataRow dr in dt.Rows) { lstp.Add(new WmsPlate(dr)); } return lstp; } /// /// 迭代取容器里所有商品,包含子容器及其子容器... /// /// /// /* public List getPlateStoks(string plateId, bool showSub = false) { List stks = new List(); DataTable dt = new WmsPlateStock_tmp().getStockLst(plateId); foreach (DataRow dr in dt.Rows) { stks.Add(new WmsPlateStock_tmp(dr)); } if (!showSub) { return stks; } List subPlate = getSubPlates(plateId); foreach (WmsPlate obj in subPlate) { stks.Concat(getPlateStoks(obj.plateId, showSub)); } return stks; } */ private List getPlateJobsDts(List dts,string plateId, bool showSub = false) { // LogHelper.debug(this.GetType(), string.Format(" plate contents dts size {2}, plateId {0},showSub {1}", plateId, showSub,dts.Count)); dts.Add(new WmsPlateStock_tmp().getStockLst(plateId)); LogHelper.debug(this.GetType(), string.Format(" plate contents dts size {2}, plateId {0},showSub {1}", plateId, showSub, dts.Count)); if (!showSub) { return dts; } List subPlate = getSubPlateIds(plateId); LogHelper.debug(this.GetType(), string.Format(" plate {0} sub plate count {1} ",plateId,subPlate.Count )); foreach (string p in subPlate) { LogHelper.debug(this.GetType(), string.Format("2 subplate size {2}, plateId {0},sub plate id {1}", plateId, p, subPlate.Count)); // dts.Concat(getPlateJobsDts(dts,obj.plateId, showSub)); if (p.Equals(plateId)) { continue; } dts=(getPlateJobsDts(dts, p, showSub)); } return dts; } public DataTable getPateJobsDt(string plateId, bool showSub = false) { List dts = new List(); dts = getPlateJobsDts(dts ,plateId, showSub); DataTable d = dts[0]; for (int i = 1; i < dts.Count;i++) { d= unionTables(d, dts[i],i+""); } return d; } private Dictionary> getPlatePlateRequest(Dictionary> requests, string plateId, bool showSub = false) { // LogHelper.debug(this.GetType(), string.Format(" plate contents dts size {2}, plateId {0},showSub {1}", plateId, showSub, requests.Count)); List lst = new WmsPlateStock_tmp().getPickRequests(plateId,enumOutStoreType.拣货出库); foreach(WmsOutPickRequest p in lst) { if (!requests.ContainsKey(p.pickOrderNo)) { requests.Add(p.pickOrderNo, lst); // LogHelper.debug(this.GetType(), string.Format(" plateId {0} contents request {1}", plateId, p.pickOrderNo)); } } // LogHelper.debug(this.GetType(), string.Format(" plateId {0} contents request size {2}, showSub {1}", plateId, showSub, lst.Count)); if (!showSub) { return requests; } List subPlate = getSubPlateIds(plateId); // LogHelper.debug(this.GetType(), string.Format(" plate {0} sub plate count {1} ", plateId, subPlate.Count)); foreach (string p in subPlate) { // dts.Concat(getPlateJobsDts(dts,obj.plateId, showSub)); requests = getPlatePlateRequest(requests, p, showSub) ; } return requests; } public List getPlateRequests(string plateId, bool showSub = false) { List lst = new List(); Dictionary> requests = new Dictionary>(); requests = getPlatePlateRequest(requests, plateId, showSub); // LogHelper.debug(this.GetType(), string.Format(" plate {0} request list count {1} ", plateId, requests.Count)); foreach (string p in requests.Keys) { lst= lst.Concat(requests[p]).ToList(); } LogHelper.debug(this.GetType(), string.Format(" plate {0} request count {1} ", plateId, lst.Count)); return lst ; } public static DataTable unionTables(DataTable dt1,DataTable dt2,string newName) { DataTable dt = dt1.Copy(); dt.TableName= newName; foreach(DataRow item in dt2.Rows) { DataRow dr = dt.NewRow(); dr.ItemArray =item.ItemArray; dt.Rows.Add(dr); } return dt; } /// /// 固定容器 /// /// /// public DataTable queryRegistedPlate(string flowNo) { cmdParameters[0] = flowNo; return CustQuery(900).Tables[0]; } /// /// 拣货子容器 /// /// /// public DataTable queryStockTmpPlate(string flowNo) { cmdParameters[0] = flowNo; return CustQuery(910).Tables[0]; } public DataTable queryFromPlate(string flowNo) { DataTable dt = queryStockTmpPlate(flowNo); if(dt.Rows.Count > 0) //若存在 临时库存,返回库存相关内容 { return dt; } return queryRegistedPlate(flowNo); // 固定容器, 返回定义 } public int releaseSubPlate(string fromPlate) { cmdParameters[0] = fromPlate; return CustOper(1100); } public DataTable getLineId(string customerId) { cmdParameters[0] = customerId; return CustQuery(1200).Tables[0]; } /// /// 根据货物货区属性和客户ID,查找最新在用的wmsplate /// /// pickorder custid /// 货区,114,115.。。 /// public WmsPlate getLatestPlate(string custId, string goodsId) { cmdParameters[0] = custId; cmdParameters[1] = goodsId; DataTable dt = CustQuery(1300).Tables[0]; foreach (DataRow dr in dt.Rows) { return new WmsPlate(dr); } return new WmsPlate(); } } }