387 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			387 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C#
		
	
	
	
| 
 | ||
| /// <summary>
 | ||
| ///INTERFACE CLASS FOR TABLE t_wmsPlate
 | ||
| ///By wm  
 | ||
| ///on 05/22/2020
 | ||
| /// </summary>
 | ||
| 
 | ||
| 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<WmsPlate> getSubPlates(string plateId)
 | ||
|         {
 | ||
|             List<WmsPlate> lst = new List<WmsPlate>();
 | ||
|             cmdParameters[0] = plateId;
 | ||
|             DataTable dt = CustQuery(800).Tables[0];
 | ||
|             foreach (DataRow dr in dt.Rows)
 | ||
|             {
 | ||
|                 lst.Add(new WmsPlate(dr));
 | ||
| 
 | ||
|             }
 | ||
|             return lst;
 | ||
|         }
 | ||
|         */
 | ||
|         public List<string> getSubPlateIds(string plateId)
 | ||
|         {
 | ||
|             List<string> lst = new List<string>();
 | ||
|             cmdParameters[0] = plateId;
 | ||
|             DataTable dt = CustQuery(800).Tables[0];
 | ||
|             foreach (DataRow dr in dt.Rows)
 | ||
|             {
 | ||
|                 lst.Add(dr["subPlateId"].ToString());
 | ||
| 
 | ||
|             }
 | ||
|             return lst;
 | ||
|         }
 | ||
| 
 | ||
|         public List<WmsPlate> getSubPlates(string plateId)
 | ||
|         {
 | ||
|             List<WmsPlate> lstp = new List<WmsPlate>();
 | ||
|             cmdParameters[0] = plateId;
 | ||
|             DataTable dt = CustQuery(1000).Tables[0];
 | ||
|             foreach (DataRow dr in dt.Rows)
 | ||
|             {
 | ||
|                 lstp.Add(new WmsPlate(dr));
 | ||
| 
 | ||
|             }
 | ||
|             return lstp;
 | ||
|         }
 | ||
|       
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 迭代取容器里所有商品,包含子容器及其子容器...
 | ||
|         /// </summary>
 | ||
|         /// <param name="plateId"></param>
 | ||
|         /// <returns></returns>
 | ||
|        /* public List<WmsPlateStock_tmp> getPlateStoks(string plateId, bool showSub = false)
 | ||
|         {
 | ||
|             List<WmsPlateStock_tmp> stks = new List<WmsPlateStock_tmp>();
 | ||
| 
 | ||
|             DataTable dt = new WmsPlateStock_tmp().getStockLst(plateId);
 | ||
|             foreach (DataRow dr in dt.Rows)
 | ||
|             {
 | ||
|                 stks.Add(new WmsPlateStock_tmp(dr));
 | ||
|             }
 | ||
|             if (!showSub)
 | ||
|             {
 | ||
|                 return stks;
 | ||
|             }
 | ||
| 
 | ||
|             List<WmsPlate> subPlate = getSubPlates(plateId);
 | ||
| 
 | ||
|             foreach (WmsPlate obj in subPlate)
 | ||
|             {
 | ||
|                 stks.Concat(getPlateStoks(obj.plateId, showSub));
 | ||
|             }
 | ||
| 
 | ||
|             return stks;
 | ||
|         }
 | ||
|         */
 | ||
| 
 | ||
|         private List<DataTable> getPlateJobsDts(List<DataTable> 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<string>   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<DataTable> dts = new List<DataTable>();
 | ||
|             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<string, List<WmsOutPickRequest>> getPlatePlateRequest(Dictionary<string, List<WmsOutPickRequest>> 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<WmsOutPickRequest> 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<string> 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<WmsOutPickRequest> getPlateRequests(string plateId, bool showSub = false)
 | ||
|         {
 | ||
|             List<WmsOutPickRequest> lst = new List<WmsOutPickRequest>();
 | ||
|             Dictionary<string, List<WmsOutPickRequest>> requests = new Dictionary<string, List<WmsOutPickRequest>>();
 | ||
|             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;
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 固定容器
 | ||
|         /// </summary>
 | ||
|         /// <param name="flowNo"></param>
 | ||
|         /// <returns></returns>
 | ||
|         public DataTable queryRegistedPlate(string flowNo)
 | ||
|         {
 | ||
|             cmdParameters[0] = flowNo;
 | ||
|             return CustQuery(900).Tables[0];
 | ||
|                
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 拣货子容器
 | ||
|         /// </summary>
 | ||
|         /// <param name="flowNo"></param>
 | ||
|         /// <returns></returns>
 | ||
|         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];
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 根据货物货区属性和客户ID,查找最新在用的wmsplate
 | ||
|         /// </summary>
 | ||
|         /// <param name="custId">pickorder custid</param>
 | ||
|         /// <param name="part">货区,114,115.。。</param>
 | ||
|         /// <returns></returns>
 | ||
|         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();
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
|     }
 | ||
| 
 | ||
| 
 | ||
| }
 | ||
|  
 | ||
|   |