private void SetTreeEntry()
{
try
{
var productObj = this.View.Model.GetValue("FParentproduct") as DynamicObject;
string filter = "";
if (productObj != null)
{
long productId = Convert.ToInt64(productObj["Id"]);
filter = $"t0.FMOEntryID = {productId}";
}
DynamicObjectCollection sqldataObjs = GetProductObjs("Parproduct", filter);
// 清空现有数据
int rowCount = this.View.Model.GetEntryRowCount(TreeEntryEntityKey);
for (int j = rowCount - 1; j >= 0; j--)
{
this.View.Model.DeleteEntryRow(TreeEntryEntityKey, j);
}
int mainRowSeq = 0; // 主行序号
if (sqldataObjs != null && sqldataObjs.Count > 0)
{
//判断是否存在多行供给
var groupedData = sqldataObjs.GroupBy(obj => obj["RowNum"].ToString())
.ToDictionary(g => g.Key, g => g.ToList());
foreach (var group in groupedData)
{
var parentData = group.Value.FirstOrDefault(); // 父节点数据
int rootNum = Convert.ToInt32(parentData["MainProDuctId"]);
if (parentData != null)
{
// 创建父节点
this.View.Model.CreateNewEntryRow(TreeEntryEntityKey);
int parentRowIndex = this.View.Model.GetEntryRowCount(TreeEntryEntityKey) - 1;
this.View.Model.SetValue("Fseq", ++mainRowSeq, parentRowIndex);
this.View.Model.SetValue("FROWID", parentData["ROWID"], parentRowIndex);
this.View.Model.SetValue("FPARENTROWID", parentData["MainProDuctId"], parentRowIndex);
this.View.Model.SetValue("FROWEXPANDTYPE", 0, parentRowIndex);
this.View.Model.SetValue("FMATERIALID", parentData["FMATERIALID"], parentRowIndex);
this.View.Model.SetValue("FYFQTY", parentData["YFQTY"], parentRowIndex); // 应发数量
this.View.Model.SetValue("FSLQTY", parentData["SLQTY"], parentRowIndex); // 实领数量
this.View.Model.SetValue("FWLQTY", parentData["WLQTY"], parentRowIndex); // 未领数量
this.View.Model.SetValue("FCGY", parentData["采购员"], parentRowIndex); // 采购员
this.View.Model.SetValue("FGYS", parentData["供应商"], parentRowIndex); // 供应商
this.View.Model.SetValue("FCGQTY", parentData["采购数量"], parentRowIndex); // 采购数量
this.View.Model.SetValue("FCGSL", parentData["收料通知单号"], parentRowIndex); // 收料通知单号
this.View.Model.SetValue("FCGSLQTY", parentData["收料数量"], parentRowIndex); // 收料数量
this.View.Model.SetValue("FHHZT", parentData["HHZT"], parentRowIndex); // 回货状态
this.View.Model.SetValue("FSLDATE", parentData["收料日期"], parentRowIndex); // 收料日期
this.View.Model.SetValue("FLLJY", parentData["来料检验单号"], parentRowIndex); // 来料检验单号
this.View.Model.SetValue("FQualifiedQty", parentData["合格数量"], parentRowIndex); // 合格数量
this.View.Model.SetValue("FLLJYZT", parentData["来料检验单据状态"], parentRowIndex); // 来料检验单据状态
this.View.Model.SetValue("FCGRK", parentData["采购入库单号"], parentRowIndex); // 采购入库单号
this.View.Model.SetValue("FRKDate", parentData["入库日期"], parentRowIndex); // 入库日期
this.View.Model.SetValue("FMustQty", parentData["应收数量"], parentRowIndex); // 应收数量
this.View.Model.SetValue("FRealQty", parentData["实收数量"], parentRowIndex); // 实收数量
// 如果只有一行供给信息或没有供给信息,直接绑定到父节点
if (group.Value.Count == 1)
{
this.View.Model.SetValue("FGJTYPE", parentData["GJTYPE"], parentRowIndex); // 供给类型
this.View.Model.SetValue("FSUPPLYBILLNO", parentData["FSUPPLYBILLNO"], parentRowIndex); // 供给单号
this.View.Model.SetValue("FGJQTY", parentData["GJQTY"], parentRowIndex); // 供给数量
this.View.Model.SetValue("FCGY", parentData["采购员"], parentRowIndex); // 采购员
this.View.Model.SetValue("FGYS", parentData["供应商"], parentRowIndex); // 供应商
this.View.Model.SetValue("FCGQTY", parentData["采购数量"], parentRowIndex); // 采购数量
this.View.Model.SetValue("FCGSL", parentData["收料通知单号"], parentRowIndex); // 收料通知单号
this.View.Model.SetValue("FCGSLQTY", parentData["收料数量"], parentRowIndex); // 收料数量
this.View.Model.SetValue("FHHZT", parentData["HHZT"], parentRowIndex); // 回货状态
this.View.Model.SetValue("FSLDATE", parentData["收料日期"], parentRowIndex); // 收料日期
this.View.Model.SetValue("FLLJY", parentData["来料检验单号"], parentRowIndex); // 来料检验单号
this.View.Model.SetValue("FQualifiedQty", parentData["合格数量"], parentRowIndex); // 合格数量
this.View.Model.SetValue("FLLJYZT", parentData["来料检验单据状态"], parentRowIndex); // 来料检验单据状态
this.View.Model.SetValue("FCGRK", parentData["采购入库单号"], parentRowIndex); // 采购入库单号
this.View.Model.SetValue("FRKDate", parentData["入库日期"], parentRowIndex); // 入库日期
this.View.Model.SetValue("FMustQty", parentData["应收数量"], parentRowIndex); // 应收数量
this.View.Model.SetValue("FRealQty", parentData["实收数量"], parentRowIndex); // 实收数量
}
else
{
int parNum = Convert.ToInt32(parentData["PARENTROWID"]);
int par = parNum + rootNum;
// 创建子节点
foreach (var childData in group.Value.Skip(1))
{
this.View.Model.CreateNewEntryRow(TreeEntryEntityKey);
int childRowIndex = this.View.Model.GetEntryRowCount(TreeEntryEntityKey) - 1;
this.View.Model.SetValue("Fseq", ++mainRowSeq, childRowIndex);
this.View.Model.SetValue("FROWID", childData["ROWID"], childRowIndex);
this.View.Model.SetValue("FPARENTROWID", par, childRowIndex);
this.View.Model.SetValue("FROWEXPANDTYPE", 0, childRowIndex);
this.View.Model.SetValue("FMATERIALID", childData["FMATERIALID"], childRowIndex);
this.View.Model.SetValue("FYFQTY", childData["YFQTY"], childRowIndex); // 应发数量
this.View.Model.SetValue("FSLQTY", childData["SLQTY"], childRowIndex); // 实领数量
this.View.Model.SetValue("FWLQTY", childData["WLQTY"], childRowIndex); // 未领数量
this.View.Model.SetValue("FGJTYPE", childData["GJTYPE"], childRowIndex); // 供给类型
this.View.Model.SetValue("FSUPPLYBILLNO", childData["FSUPPLYBILLNO"], childRowIndex); // 供给单号
this.View.Model.SetValue("FGJQTY", childData["GJQTY"], childRowIndex); // 供给数量
this.View.Model.SetValue("FCGY", childData["采购员"], childRowIndex); // 采购员
this.View.Model.SetValue("FGYS", childData["供应商"], childRowIndex); // 供应商
this.View.Model.SetValue("FCGQTY", childData["采购数量"], childRowIndex); // 采购数量
this.View.Model.SetValue("FCGSL", childData["收料通知单号"], childRowIndex); // 收料通知单号
this.View.Model.SetValue("FCGSLQTY", childData["收料数量"], childRowIndex); // 收料数量
this.View.Model.SetValue("FHHZT", childData["HHZT"], childRowIndex); // 回货状态
this.View.Model.SetValue("FSLDATE", childData["收料日期"], childRowIndex); // 收料日期
this.View.Model.SetValue("FLLJY", childData["来料检验单号"], childRowIndex); // 来料检验单号
this.View.Model.SetValue("FQualifiedQty", childData["合格数量"], childRowIndex); // 合格数量
this.View.Model.SetValue("FLLJYZT", childData["来料检验单据状态"], childRowIndex); // 来料检验单据状态
this.View.Model.SetValue("FCGRK", childData["采购入库单号"], childRowIndex); // 采购入库单号
this.View.Model.SetValue("FRKDate", childData["入库日期"], childRowIndex); // 入库日期
this.View.Model.SetValue("FMustQty", childData["应收数量"], childRowIndex); // 应收数量
this.View.Model.SetValue("FRealQty", childData["实收数量"], childRowIndex); // 实收数量
}
}
}
}
}
this.View.ShowWarnningMessage($"SQL查询返回: {sqldataObjs?.Count ?? 0}行, 显示行数: {this.View.Model.GetEntryRowCount(TreeEntryEntityKey)}行");
}
catch (Exception ex)
{
this.View.ShowErrMessage($"发生错误: {ex.Message}");
}
}
给这段代码 增加递归方法 当根节点的子节点是生产订单供应时,需要把子节点第生产订单供需也展示出来 不要调整当前代码里面已经存在的逻辑