2023-05-23 16:13:17 +08:00
|
|
|
|
|
|
|
|
|
/// <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;
|
2023-11-21 19:18:23 +08:00
|
|
|
|
using DeiNiu.Utils;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
|
|
|
|
|
namespace DeiNiu.wms.Data.Model
|
|
|
|
|
{
|
|
|
|
|
[Serializable]
|
|
|
|
|
public class WmsPlate : WmsPlate_base
|
|
|
|
|
{
|
|
|
|
|
public WmsPlate()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
2023-09-04 22:41:19 +08:00
|
|
|
|
public WmsPlate(string plateId)
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
|
|
|
|
cmdParameters[0] = plateId;
|
2023-09-04 22:41:19 +08:00
|
|
|
|
getModel(100);
|
2023-05-23 16:13:17 +08:00
|
|
|
|
|
|
|
|
|
}
|
2023-09-04 22:41:19 +08:00
|
|
|
|
public WmsPlate(int id) : base(id)
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
2023-09-04 22:41:19 +08:00
|
|
|
|
public WmsPlate(DataRow dr) : base(dr)
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
2023-09-04 22:41:19 +08:00
|
|
|
|
protected override void getImp()
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
2023-09-04 22:41:19 +08:00
|
|
|
|
model_imp = new WmsPlate_Imp();
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//begin cust db operation, query, excute sql etc.
|
2023-09-04 22:41:19 +08:00
|
|
|
|
//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;
|
2024-02-06 19:36:47 +08:00
|
|
|
|
this.jobNo = "";
|
|
|
|
|
this.inPlate = "";
|
2023-09-04 22:41:19 +08:00
|
|
|
|
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();
|
|
|
|
|
}
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
|
|
|
|
/*public List<WmsPlate> getSubPlates(string plateId)
|
2023-09-04 22:41:19 +08:00
|
|
|
|
{
|
|
|
|
|
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;
|
|
|
|
|
}
|
2023-11-21 19:18:23 +08:00
|
|
|
|
*/
|
|
|
|
|
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;
|
|
|
|
|
}
|
2024-02-06 19:36:47 +08:00
|
|
|
|
|
2023-09-04 22:41:19 +08:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 迭代取容器里所有商品,包含子容器及其子容器...
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="plateId"></param>
|
|
|
|
|
/// <returns></returns>
|
2023-11-21 19:18:23 +08:00
|
|
|
|
/* public List<WmsPlateStock_tmp> getPlateStoks(string plateId, bool showSub = false)
|
2023-09-04 22:41:19 +08:00
|
|
|
|
{
|
|
|
|
|
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;
|
|
|
|
|
}
|
2023-11-21 19:18:23 +08:00
|
|
|
|
*/
|
2023-09-04 22:41:19 +08:00
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
private List<DataTable> getPlateJobsDts(List<DataTable> dts,string plateId, bool showSub = false)
|
2023-09-04 22:41:19 +08:00
|
|
|
|
{
|
2023-11-21 19:18:23 +08:00
|
|
|
|
// LogHelper.debug(this.GetType(), string.Format(" plate contents dts size {2}, plateId {0},showSub {1}", plateId, showSub,dts.Count));
|
|
|
|
|
|
|
|
|
|
|
2023-09-04 22:41:19 +08:00
|
|
|
|
|
|
|
|
|
dts.Add(new WmsPlateStock_tmp().getStockLst(plateId));
|
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
LogHelper.debug(this.GetType(), string.Format(" plate contents dts size {2}, plateId {0},showSub {1}", plateId, showSub, dts.Count));
|
2023-09-04 22:41:19 +08:00
|
|
|
|
if (!showSub)
|
|
|
|
|
{
|
|
|
|
|
return dts;
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
List<string> subPlate = getSubPlateIds(plateId);
|
2023-09-04 22:41:19 +08:00
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
LogHelper.debug(this.GetType(), string.Format(" plate {0} sub plate count {1} ",plateId,subPlate.Count ));
|
|
|
|
|
|
|
|
|
|
foreach (string p in subPlate)
|
2023-09-04 22:41:19 +08:00
|
|
|
|
{
|
2024-03-06 20:48:05 +08:00
|
|
|
|
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;
|
|
|
|
|
}
|
2023-11-21 19:18:23 +08:00
|
|
|
|
dts=(getPlateJobsDts(dts, p, showSub));
|
2023-09-04 22:41:19 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return dts;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public DataTable getPateJobsDt(string plateId, bool showSub = false)
|
|
|
|
|
{
|
2023-11-21 19:18:23 +08:00
|
|
|
|
List<DataTable> dts = new List<DataTable>();
|
|
|
|
|
dts = getPlateJobsDts(dts ,plateId, showSub);
|
2023-09-04 22:41:19 +08:00
|
|
|
|
|
|
|
|
|
DataTable d = dts[0];
|
|
|
|
|
for (int i = 1; i < dts.Count;i++)
|
|
|
|
|
{
|
|
|
|
|
d= unionTables(d, dts[i],i+"");
|
|
|
|
|
}
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
2023-09-04 22:41:19 +08:00
|
|
|
|
return d;
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
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();
|
|
|
|
|
}
|
2024-11-15 23:52:43 +08:00
|
|
|
|
log.Debug( string.Format(" plate {0} request count {1} ", plateId, lst.Count));
|
2023-11-21 19:18:23 +08:00
|
|
|
|
return lst ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2023-09-04 22:41:19 +08:00
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
2024-02-06 19:36:47 +08:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 固定容器
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="flowNo"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public DataTable queryRegistedPlate(string flowNo)
|
2023-11-21 19:18:23 +08:00
|
|
|
|
{
|
|
|
|
|
cmdParameters[0] = flowNo;
|
|
|
|
|
return CustQuery(900).Tables[0];
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2024-02-06 19:36:47 +08:00
|
|
|
|
/// <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); // 固定容器, 返回定义
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
|
|
|
|
public int releaseSubPlate(string fromPlate)
|
|
|
|
|
{
|
|
|
|
|
cmdParameters[0] = fromPlate;
|
|
|
|
|
return CustOper(1100);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public DataTable getLineId(string customerId)
|
|
|
|
|
{
|
|
|
|
|
cmdParameters[0] = customerId;
|
|
|
|
|
return CustQuery(1200).Tables[0];
|
|
|
|
|
}
|
2024-02-06 19:36:47 +08:00
|
|
|
|
|
|
|
|
|
/// <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();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
2023-09-04 22:41:19 +08:00
|
|
|
|
|
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
2023-09-04 22:41:19 +08:00
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
|