提交 bb503a5c authored 作者: 彭寒菲's avatar 彭寒菲

树形维护

上级 836db932
...@@ -50,6 +50,11 @@ namespace LF.K3.SCM.BusinessPlugin ...@@ -50,6 +50,11 @@ namespace LF.K3.SCM.BusinessPlugin
typeof(object), typeof(object),
attributes: new SimplePropertyAttribute() { Alias = "bh" } attributes: new SimplePropertyAttribute() { Alias = "bh" }
); );
dot.RegisterSimpleProperty(
"Dosage",
typeof(object),
attributes: new SimplePropertyAttribute() { Alias = "Dosage" }
);
for (int i = 0; i < obj.Length; i++) for (int i = 0; i < obj.Length; i++)
{ {
DynamicObject qureyObjs = new DynamicObject(dot); DynamicObject qureyObjs = new DynamicObject(dot);
...@@ -57,6 +62,7 @@ namespace LF.K3.SCM.BusinessPlugin ...@@ -57,6 +62,7 @@ namespace LF.K3.SCM.BusinessPlugin
{ {
qureyObjs[p] = e.DataObjects[i][p]; qureyObjs[p] = e.DataObjects[i][p];
} }
qureyObjs["Dosage"] = Math.Round(Convert.ToDouble(qureyObjs["FNUMERATOR"]) / Convert.ToDouble(qureyObjs["FDENOMINATOR"]), 4);
qureyObjs["bh"] = qureyObjs["FTreeEntity_FSEQ"]; qureyObjs["bh"] = qureyObjs["FTreeEntity_FSEQ"];
e.DataObjects[i] = qureyObjs; e.DataObjects[i] = qureyObjs;
} }
...@@ -83,7 +89,7 @@ namespace LF.K3.SCM.BusinessPlugin ...@@ -83,7 +89,7 @@ namespace LF.K3.SCM.BusinessPlugin
{ {
foreach (DynamicObject item in obj) foreach (DynamicObject item in obj)
{ {
//item["Dosage"] = Math.Round(Convert.ToDouble(item["FNUMERATOR"]) / Convert.ToDouble(item["FDENOMINATOR"]), 4);
result.Add(item); result.Add(item);
//循环子项集合 //循环子项集合
foreach (var dic in dicdr) foreach (var dic in dicdr)
...@@ -99,17 +105,17 @@ namespace LF.K3.SCM.BusinessPlugin ...@@ -99,17 +105,17 @@ namespace LF.K3.SCM.BusinessPlugin
object[] s = a[i].ItemArray; object[] s = a[i].ItemArray;
tra["FID"] = s[2]; tra["FID"] = s[2];
tra["FCHILDUNITID_U"] = "0"; tra["FCHILDUNITID_U"] = "0";
tra["FNUMERATOR"] = s[0]; tra["Dosage"] = Math.Round(Convert.ToDouble(s[13]),4);
tra["FPOSITIONNO"] = s[4]; tra["FPOSITIONNO"] = s[5];
tra["FMATERIALIDCHILD_Id"] = s[1]; tra["FMATERIALIDCHILD_Id"] = s[1];
tra["FCHILDUNITID_Id"] = s[5]; tra["FCHILDUNITID_Id"] = s[6];
tra["FENTRYID"] = s[6]; tra["FENTRYID"] = s[7];
tra["FTreeEntity_FSEQ"] = s[7]; tra["FTreeEntity_FSEQ"] = s[8];
tra["FUseOrgId"] = "1"; tra["FUseOrgId"] = "1";
tra["FMATERIALIDCHILD_FNumber"] = s[8]; tra["FMATERIALIDCHILD_FNumber"] = s[9];
//tra["FCHILDUNITID_FName"] = "Pce"; //tra["FCHILDUNITID_FName"] = "Pce";
tra["FMEMO"] = s[10]; tra["FMEMO"] = s[12];
tra["bh"] = item["bh"]+"."+ s[7]; tra["bh"] = item["bh"]+"."+ s[8];
result.Add(tra); result.Add(tra);
hs.Add(dic.Key.ToString()); //把添加的存在已添加集合 hs.Add(dic.Key.ToString()); //把添加的存在已添加集合
tra = new DynamicObject(e.DynamicObjectType); tra = new DynamicObject(e.DynamicObjectType);
...@@ -133,19 +139,19 @@ namespace LF.K3.SCM.BusinessPlugin ...@@ -133,19 +139,19 @@ namespace LF.K3.SCM.BusinessPlugin
//查询子项物料 //查询子项物料
public DataTable Material(string id) public DataTable Material(string id)
{ {
string sql = string.Format(@"/*dialect*/with stepCTE AS string sql = string.Format(@"/*dialect*/with stepCTE AS
( (
select b.FMATERIALID as f, a.FMATERIALID as z,a.FID,a.FNUMERATOR,a.FPOSITIONNO,a.FUNITID,a.FENTRYID,a.FSEQ,ma.FNUMBER,1 AS Lev,row_number() over(partition by b.FMATERIALID order by FSEQ) as rank from T_ENG_BOMCHILD a inner join ( select * from T_ENG_BOM where fid={0}) b on a.FID=b.FID select b.FMATERIALID as f, a.FMATERIALID as z,a.FID,a.FNUMERATOR,a.FDENOMINATOR,a.FPOSITIONNO,a.FUNITID,a.FENTRYID,a.FSEQ,ma.FNUMBER,1 AS Lev,row_number() over(partition by b.FMATERIALID order by FSEQ) as rank from T_ENG_BOMCHILD a inner join ( select * from T_ENG_BOM where fid={0}) b on a.FID=b.FID
inner join T_BD_MATERIAL ma on a.FMATERIALID=ma.FMATERIALID inner join T_BD_MATERIAL ma on a.FMATERIALID=ma.FMATERIALID
union all union all
select c.f as f ,c.z as z,c.FID,c.FNUMERATOR,c.FPOSITIONNO,c.FUNITID,c.FENTRYID,c.FSEQ,c.FNUMBER,cte.Lev+1,row_number() over(partition by c.f order by c.FSEQ) as rank from select c.f as f ,c.z as z,c.FID,c.FNUMERATOR,c.FDENOMINATOR,c.FPOSITIONNO,c.FUNITID,c.FENTRYID,c.FSEQ,c.FNUMBER,cte.Lev+1,row_number() over(partition by c.f order by c.FSEQ) as rank from
( (
select a.FMATERIALID z ,b.FMATERIALID f,a.FID,a.FNUMERATOR,a.FPOSITIONNO,a.FUNITID,a.FENTRYID,a.FSEQ,ma.FNUMBER from T_ENG_BOMCHILD a inner join T_ENG_BOM b on a.FID=b.FID inner join T_BD_MATERIAL ma on a.FMATERIALID=ma.FMATERIALID select a.FMATERIALID z ,b.FMATERIALID f,a.FID,a.FNUMERATOR,a.FDENOMINATOR,a.FPOSITIONNO,a.FUNITID,a.FENTRYID,a.FSEQ,ma.FNUMBER from T_ENG_BOMCHILD a inner join T_ENG_BOM b on a.FID=b.FID inner join T_BD_MATERIAL ma on a.FMATERIALID=ma.FMATERIALID
) c ) c
inner join stepCTE cte on cte.z=c.f inner join stepCTE cte on cte.z=c.f
) )
select stepCTE.*,T_ENG_BOMCHILD_l.FMEMO from stepCTE left join T_ENG_BOMCHILD_l on stepCTE.FENTRYID=T_ENG_BOMCHILD_l.FENTRYID order by Lev", id); select stepCTE.*,T_ENG_BOMCHILD_l.FMEMO,convert(decimal(18,4),(stepCTE.FNUMERATOR/stepCTE.FDENOMINATOR)) Dosage from stepCTE left join T_ENG_BOMCHILD_l on stepCTE.FENTRYID=T_ENG_BOMCHILD_l.FENTRYID order by Lev", id);
return DBUtils.ExecuteDataSet(this.Context, sql).Tables[0]; return DBUtils.ExecuteDataSet(this.Context, sql).Tables[0];
} }
} }
......
...@@ -12,5 +12,6 @@ namespace LF.K3.SCM.BusinessPlugin ...@@ -12,5 +12,6 @@ namespace LF.K3.SCM.BusinessPlugin
public string Name { get; set; } public string Name { get; set; }
public string Number { get; set; } public string Number { get; set; }
public string text { get; set; } public string text { get; set; }
public string MaterialNumber { get; set; }
} }
} }
...@@ -61,7 +61,7 @@ public class BomTree1 : AbstractMFGDynamicFormPlugIn ...@@ -61,7 +61,7 @@ public class BomTree1 : AbstractMFGDynamicFormPlugIn
protected string CustomCalendarBillPageId { get; set; } protected string CustomCalendarBillPageId { get; set; }
private PermissionAuthResult authSynsResult { get; set; } private PermissionAuthResult authSynsResult { get; set; }
private Dictionary<string, ChirdNode> allTree { get; set; }
public override void OnInitialize(InitializeEventArgs e) public override void OnInitialize(InitializeEventArgs e)
{ {
base.OnInitialize(e); base.OnInitialize(e);
...@@ -72,6 +72,7 @@ public class BomTree1 : AbstractMFGDynamicFormPlugIn ...@@ -72,6 +72,7 @@ public class BomTree1 : AbstractMFGDynamicFormPlugIn
public override void OnLoad(EventArgs e) public override void OnLoad(EventArgs e)
{ {
base.OnLoad(e); base.OnLoad(e);
allTree = new Dictionary<string, ChirdNode>();
CurSelNodeData = BomTreeDatasMger.CreateDefCurSelNodeData(); CurSelNodeData = BomTreeDatasMger.CreateDefCurSelNodeData();
CurTreeView.SetRootVisible(visible: false); CurTreeView.SetRootVisible(visible: false);
long num = MFGBillUtil.GetParam<long>(((AbstractDynamicFormPlugIn)(object)this).View, "BOMID", 0L); long num = MFGBillUtil.GetParam<long>(((AbstractDynamicFormPlugIn)(object)this).View, "BOMID", 0L);
...@@ -197,7 +198,7 @@ public class BomTree1 : AbstractMFGDynamicFormPlugIn ...@@ -197,7 +198,7 @@ public class BomTree1 : AbstractMFGDynamicFormPlugIn
base.AfterBarItemClick(e); base.AfterBarItemClick(e);
if ((!(e.BarItemKey != "tbSplitSave") || !(e.BarItemKey != "tbSave") || !(e.BarItemKey != "tbSaveTemp")) && IsSaveSuccess) if ((!(e.BarItemKey != "tbSplitSave") || !(e.BarItemKey != "tbSave") || !(e.BarItemKey != "tbSaveTemp")) && IsSaveSuccess)
{ {
ReExpandBom(); //ReExpandBom();
} }
} }
...@@ -272,7 +273,7 @@ public class BomTree1 : AbstractMFGDynamicFormPlugIn ...@@ -272,7 +273,7 @@ public class BomTree1 : AbstractMFGDynamicFormPlugIn
DoChildOper("tbSave"); DoChildOper("tbSave");
if (IsSaveSuccess) if (IsSaveSuccess)
{ {
ReExpandBom(); //ReExpandBom();
} }
if (CurSelNodeData != null) if (CurSelNodeData != null)
{ {
...@@ -288,6 +289,78 @@ public class BomTree1 : AbstractMFGDynamicFormPlugIn ...@@ -288,6 +289,78 @@ public class BomTree1 : AbstractMFGDynamicFormPlugIn
((AbstractDynamicFormPlugIn)(object)this).View.SendDynamicFormAction(BomView); ((AbstractDynamicFormPlugIn)(object)this).View.SendDynamicFormAction(BomView);
} }
BomExpandNodeTreeMode bomExpandNodeTreeMode = BomTreeDatasMger.FindBomNodeMode(e.NodeId); BomExpandNodeTreeMode bomExpandNodeTreeMode = BomTreeDatasMger.FindBomNodeMode(e.NodeId);
if (bomExpandNodeTreeMode == null)
{
var MaterialNumber = e.NodeId;
string sql = $@"/*dialect*/select T1.FID,t1.FMATERIALID from T_eng_bom T1 LEFT JOIN T_BD_MATERIAL T2 ON T1.FMATERIALID = T2.FMATERIALID WHERE T2.FNUMBER ='{MaterialNumber}'";
DataTable dt = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0];
if (dt.Rows.Count > 0)
{
long BomFid = Convert.ToInt64(dt.Rows[0]["FID"]);
var a = ShowCustomBomForm1(BomFid);
FormMetadata formMetadata = MetaDataServiceHelper.Load(((AbstractDynamicFormPlugIn)this).Context, "ENG_BOM", true) as FormMetadata;
DynamicObjectType dynamicObjectType = formMetadata.BusinessInfo.GetDynamicObjectType();
DynamicObject[] col = BusinessDataServiceHelper.LoadFromCache(((AbstractDynamicFormPlugIn)this).Context, new object[1] { BomFid }, dynamicObjectType);
//MetaDataServiceHelper.Load()
// BusinessDataServiceHelper.Load()
if (col.Count() > 0)
{
CurSelNodeData = new BomExpandNodeTreeMode();
CurSelNodeData.EntryId = e.NodeId;
var bom = col[0];
CurSelNodeData.BomId = bom;
CurSelNodeData.MaterId = bom["MATERIALID"] as DynamicObject;
CurSelNodeData.SupplyerOrg = CurSelNodeData.MaterUseOrg;
TreeNode treeNode = new TreeNode();
if (allTree.ContainsKey(e.NodeId))
{
ChirdNode chirds;
allTree.TryGetValue(e.NodeId, out chirds);
treeNode.Number = chirds.Number;
treeNode.Name = chirds.Name;
treeNode.parentid = chirds.parentid;
treeNode.text = chirds.text;
treeNode.id = chirds.MaterialNumber;
}
CurSelNodeData.CurTreeNode = treeNode;
//CurTreeView.Select(BomFid.ToString());
}
//CurSelNodeData.SupplyerOrg
//MaterId
//BomId
//CurTreeNode
//EntryId MATERIALID
}
else
{
ShowCustomBomForm1(0);
FormMetadata formMetadata = MetaDataServiceHelper.Load(((AbstractDynamicFormPlugIn)this).Context, "ENG_BOM", true) as FormMetadata;
DynamicObjectType dynamicObjectType = formMetadata.BusinessInfo.GetDynamicObjectType();
DynamicObject[] col = BusinessDataServiceHelper.LoadFromCache(((AbstractDynamicFormPlugIn)this).Context, new object[1] { 0 }, dynamicObjectType);
CurSelNodeData = new BomExpandNodeTreeMode();
CurSelNodeData.EntryId = e.NodeId;
if (col.Count() > 0)
{
var bom = col[0];
CurSelNodeData.BomId = bom;
CurSelNodeData.MaterId = bom["MATERIALID"] as DynamicObject;
CurSelNodeData.SupplyerOrg = CurSelNodeData.MaterUseOrg;
}
TreeNode treeNode = new TreeNode();
if (allTree.ContainsKey(e.NodeId))
{
ChirdNode chirds;
allTree.TryGetValue(e.NodeId, out chirds);
treeNode.Number = chirds.Number;
treeNode.Name = chirds.Name;
treeNode.parentid = chirds.parentid;
treeNode.text = chirds.text;
treeNode.id = chirds.MaterialNumber;
}
CurSelNodeData.CurTreeNode = treeNode;
}
}
if (bomExpandNodeTreeMode == null || !(bomExpandNodeTreeMode.EntryId != CurSelNodeData.EntryId)) if (bomExpandNodeTreeMode == null || !(bomExpandNodeTreeMode.EntryId != CurSelNodeData.EntryId))
{ {
return; return;
...@@ -332,7 +405,8 @@ public class BomTree1 : AbstractMFGDynamicFormPlugIn ...@@ -332,7 +405,8 @@ public class BomTree1 : AbstractMFGDynamicFormPlugIn
base.CustomEvents(e); base.CustomEvents(e);
if (e.EventName == "ReflashBomData" && e.EventArgs == "1") if (e.EventName == "ReflashBomData" && e.EventArgs == "1")
{ {
BomTreeDatasMger.ReSetBomData(CurTreeView, BomView.Model.DataObject, CurSelNodeData.CurTreeNode.id); // BomTreeDatasMger.ReSetBomData(CurTreeView, BomView.Model.DataObject, CurSelNodeData.CurTreeNode.id);
SetViewRootNode();
IsSaveSuccess = true; IsSaveSuccess = true;
} }
if (e.EventName == "ChangeTreeBySupplyOrg") if (e.EventName == "ChangeTreeBySupplyOrg")
...@@ -362,73 +436,80 @@ public class BomTree1 : AbstractMFGDynamicFormPlugIn ...@@ -362,73 +436,80 @@ public class BomTree1 : AbstractMFGDynamicFormPlugIn
var Number = parameterDate["Number"].ToString(); var Number = parameterDate["Number"].ToString();
var Name = parameterDate["Name"].ToString(); var Name = parameterDate["Name"].ToString();
Logger.Info("IsBomId", "IsBomId"); Logger.Info("IsBomId", "IsBomId");
if (Number == "False")//物料编码是否勾选 if (Number == "False" || Name == "False")//物料编码是否勾选
{ {
this.View.ShowErrMessage("用户参数中物料编码必须勾选!"); this.View.ShowErrMessage("用户参数中物料编码和物料名称必须勾选!");
return; return;
} }
else if (IsBomId == "True")//BOM版本是否勾选
{ {
sqlParameter = $@"where wlnumber='{strarry[0]}'"; sqlParameter = $@"where wlnumber='{strarry[1]}'";
text1 = $@" ma.FNUMBER"; text1 = $@"'{SplitStr}'+ma.FNUMBER+'{SplitStr}'+mc.FNAME";
text2 = $@" wl.FNUMBER"; text2 = $@"'{SplitStr}'+wl.FNUMBER+'{SplitStr}'+wlmc.FNAME";
} }
if (Name == "True")//物料名称是否勾选 else
{ {
sqlParameter = $@"where wlnumber='{strarry[0]}'"; sqlParameter = $@"where wlnumber='{strarry[0]}'";
text1 = $@" ma.FNUMBER+'{SplitStr}'+mc.FNAME"; text1 = $@"ma.FNUMBER+'{SplitStr}'+mc.FNAME";
text2 = $@" wl.FNUMBER+'{SplitStr}'+wlmc.FNAME"; text2 = $@"wl.FNUMBER+'{SplitStr}'+wlmc.FNAME";
}
if (IsBomId == "True")//BOM版本是否勾选
{
sqlParameter = $@"where wlnumber='{strarry[1]}'";
text1 = $@"b.FNUMBER+'{SplitStr}'+ ma.FNUMBER+'{SplitStr}'+mc.FNAME";
text2 = $@"bom.FNUMBER+'{SplitStr}'+ wl.FNUMBER+'{SplitStr}'+wlmc.FNAME";
} }
} }
if (sqlParameter != "" && text1 != "" && text2 != "") if (sqlParameter != "" && text1 != "" && text2 != "")
{ {
string sql = $@"/*dialect*/with stepCTE AS ( string sql = $@"/*dialect*/with stepCTE AS (
select b.FMATERIALID as 父项物料, a.FMATERIALID as 子项物料,a.FID 父项BOMID,a.FENTRYID 子项ID,b.TreeValue 父项名称,b.wlnumber,({text1}) 子项名称, select b.FMATERIALID as 父项物料, a.FMATERIALID as 子项物料,a.FID 父项BOMID,a.FENTRYID 子项ID,b.TreeValue 父项名称,b.wlnumber,b.FNUMBER,({text1}) 子项名称,a.FREPLACEGROUP as 项次,a.FSEQ as 序号,
1 AS Lev from T_ENG_BOMCHILD a inner join 1 AS Lev from T_ENG_BOMCHILD a inner join
( select * from ( select * from
(select ({text2}) TreeValue,wl.FNUMBER as wlnumber,bom.* from T_ENG_BOM bom (select ({text2}) TreeValue,wl.FNUMBER as wlnumber,bom.* from T_ENG_BOM bom
left join T_BD_MATERIAL wl on bom.FMATERIALID=wl.FMATERIALID left join T_BD_MATERIAL wl on bom.FMATERIALID=wl.FMATERIALID
left join T_BD_MATERIAL_l wlmc on wl.FMATERIALID=wlmc.FMATERIALID and bom.FMATERIALID=wlmc.FMATERIALID) left join (select * from T_BD_MATERIAL_L where FLOCALEID=2052) wlmc on wl.FMATERIALID=wlmc.FMATERIALID and bom.FMATERIALID=wlmc.FMATERIALID)
as T0 {sqlParameter}) b on a.FID=b.FID as T0 {sqlParameter}) b on a.FID=b.FID
inner join T_BD_MATERIAL ma on a.FMATERIALID=ma.FMATERIALID inner join T_BD_MATERIAL ma on a.FMATERIALID=ma.FMATERIALID
inner join T_BD_MATERIAL_L mc on a.FMATERIALID=mc.FMATERIALID inner join (select * from T_BD_MATERIAL_L where FLOCALEID=2052) mc on a.FMATERIALID=mc.FMATERIALID
union all union all
select c.f as 父项物料 ,c.z as 子项物料,c.FID 父项BOMID,c.FENTRYID 子项ID,c.TreeValue 父项名称,wlnumbe,c.子项名称,cte.Lev+1 from select c.f as 父项物料 ,c.z as 子项物料,c.FID 父项BOMID,c.FENTRYID 子项ID,c.TreeValue 父项名称,wlnumbe,c.FNUMBER,c.子项名称,c.FREPLACEGROUP as 项次,c.FSEQ 序号,cte.Lev+1 from
( (
select a.FMATERIALID z ,b.FMATERIALID f,a.FID ,a.FENTRYID,b.TreeValue ,({text1}) 子项名称 ,b.wlnumber as wlnumbe select a.FMATERIALID z ,b.FMATERIALID f,a.FID ,a.FENTRYID,b.TreeValue ,({text1}) 子项名称 ,b.FNUMBER,b.wlnumber as wlnumbe,a.FREPLACEGROUP,a.FSEQ
from T_ENG_BOMCHILD a inner join from T_ENG_BOMCHILD a inner join
( select * from ( select * from
(select ({text2}) TreeValue,wl.FNUMBER as wlnumber,bom.* from T_ENG_BOM bom (select ({text2}) TreeValue,wl.FNUMBER as wlnumber,bom.* from T_ENG_BOM bom
inner join T_BD_MATERIAL wl on bom.FMATERIALID=wl.FMATERIALID inner join T_BD_MATERIAL wl on bom.FMATERIALID=wl.FMATERIALID
inner join T_BD_MATERIAL_l wlmc on wl.FMATERIALID=wlmc.FMATERIALID and bom.FMATERIALID=wlmc.FMATERIALID) inner join (select * from T_BD_MATERIAL_L where FLOCALEID=2052) wlmc on wl.FMATERIALID=wlmc.FMATERIALID and bom.FMATERIALID=wlmc.FMATERIALID)
as T0 )b on a.FID=b.FID as T0 )b on a.FID=b.FID
inner join T_BD_MATERIAL ma on a.FMATERIALID=ma.FMATERIALID inner join T_BD_MATERIAL ma on a.FMATERIALID=ma.FMATERIALID
inner join T_BD_MATERIAL_L mc on a.FMATERIALID=mc.FMATERIALID inner join (select * from T_BD_MATERIAL_L where FLOCALEID=2052) mc on a.FMATERIALID=mc.FMATERIALID
) c ) c
inner join stepCTE cte on cte.子项物料=c.f inner join stepCTE cte on cte.子项物料=c.f
) )
select stepCTE.*, select stepCTE.*,
case b.FDOCUMENTSTATUS when 'C' then '已审核' else '未审核' end states, case b.FDOCUMENTSTATUS when 'C' then '已审核' else '未审核' end states,
case b.FFORBIDSTATUS when 'B' then '禁用' else '未禁用' end Disables, case b.FFORBIDSTATUS when 'B' then '禁用' else '未禁用' end Disables,
case f.FERPCLSID when '2' then '1' when '3' then '1' else '2' end FERPCLSID,w.FNUMBER,l.FNAME from stepCTE case f.FERPCLSID when '2' then '1' when '3' then '1' else '2' end FERPCLSID,w.FNUMBER as materilnumber,l.FNAME from stepCTE
left join t_BD_MaterialBase f on stepCTE.子项物料=f.FMATERIALID left join t_BD_MaterialBase f on stepCTE.子项物料=f.FMATERIALID
left join T_ENG_BOM b on stepCTE.父项BOMID=b.FID left join T_ENG_BOM b on stepCTE.父项BOMID=b.FID
left join T_BD_MATERIAL w on stepCTE.子项物料=w.FMATERIALID left join T_BD_MATERIAL w on stepCTE.子项物料=w.FMATERIALID
left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID "; left join (select * from T_BD_MATERIAL_L where FLOCALEID=2052) l on stepCTE.子项物料=l.FMATERIALID order by Lev,父项BOMID,项次,序号";
Logger.Info("sql",sql);
DataTable dt = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0]; DataTable dt = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0];
Logger.Info("sql", sql);
Dictionary<string, List<ChirdNode>> all = new Dictionary<string, List<ChirdNode>>();//所有 Dictionary<string, List<ChirdNode>> all = new Dictionary<string, List<ChirdNode>>();//所有
Dictionary<string, List<ChirdNode>> Examine = new Dictionary<string, List<ChirdNode>>();//未审核 Dictionary<string, List<ChirdNode>> Examine = new Dictionary<string, List<ChirdNode>>();//未审核
Dictionary<string, List<ChirdNode>> Disable = new Dictionary<string, List<ChirdNode>>();//禁用 Dictionary<string, List<ChirdNode>> Disable = new Dictionary<string, List<ChirdNode>>();//禁用
allTree = new Dictionary<string, ChirdNode>();
HashSet<string> hs = new HashSet<string>();//自制 HashSet<string> hs = new HashSet<string>();//自制
for (int i = 0; i < dt.Rows.Count; i++) for (int i = 0; i < dt.Rows.Count; i++)
{ {
var wl = dt.Rows[i]["materilnumber"].ToString();
if (!allTree.ContainsKey(wl))
{
ChirdNode node = new ChirdNode();
node.parentid = dt.Rows[i]["父项物料"].ToString();
node.Name = dt.Rows[i]["FNAME"].ToString();
node.Number = dt.Rows[i]["FNUMBER"].ToString();
node.text = dt.Rows[i]["子项名称"].ToString();
node.MaterialNumber = dt.Rows[i]["materilnumber"].ToString();
allTree.Add(wl, node);
}
//所有数据 //所有数据
if (!all.ContainsKey(dt.Rows[i]["wlnumber"].ToString())) if (!all.ContainsKey(dt.Rows[i]["wlnumber"].ToString()))
{ {
...@@ -442,6 +523,7 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID "; ...@@ -442,6 +523,7 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID ";
node.Name = dr[j]["FNAME"].ToString(); node.Name = dr[j]["FNAME"].ToString();
node.Number = dr[j]["FNUMBER"].ToString(); node.Number = dr[j]["FNUMBER"].ToString();
node.text = dr[j]["子项名称"].ToString(); node.text = dr[j]["子项名称"].ToString();
node.MaterialNumber = dr[j]["materilnumber"].ToString();
list.Add(node); list.Add(node);
} }
if (list.Count > 0) if (list.Count > 0)
...@@ -474,6 +556,7 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID "; ...@@ -474,6 +556,7 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID ";
node.Name = dr[j]["FNAME"].ToString(); node.Name = dr[j]["FNAME"].ToString();
node.Number = dr[j]["FNUMBER"].ToString(); node.Number = dr[j]["FNUMBER"].ToString();
node.text = dr[j]["子项名称"].ToString(); node.text = dr[j]["子项名称"].ToString();
node.MaterialNumber = dr[j]["materilnumber"].ToString();
list.Add(node); list.Add(node);
} }
if (list.Count > 0) if (list.Count > 0)
...@@ -498,6 +581,7 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID "; ...@@ -498,6 +581,7 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID ";
node.Name = dr[j]["FNAME"].ToString(); node.Name = dr[j]["FNAME"].ToString();
node.Number = dr[j]["FNUMBER"].ToString(); node.Number = dr[j]["FNUMBER"].ToString();
node.text = dr[j]["子项名称"].ToString(); node.text = dr[j]["子项名称"].ToString();
node.MaterialNumber = dr[j]["materilnumber"].ToString();
list.Add(node); list.Add(node);
} }
if (list.Count > 0) if (list.Count > 0)
...@@ -510,27 +594,33 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID "; ...@@ -510,27 +594,33 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID ";
TreeNode treeNodeLst1 = BomTreeDatasMger.RootNode.children.First(); TreeNode treeNodeLst1 = BomTreeDatasMger.RootNode.children.First();
WalkNode1(treeNodeLst1, all, Examine, Disable, hs); WalkNode1(treeNodeLst1, all, Examine, Disable, hs);
CurSelNodeData = BomTreeDatasMger.FindBomNodeMode(id); //CurSelNodeData = BomTreeDatasMger.FindBomNodeMode(id);
CurTreeView.SetRootNode(BomTreeDatasMger.RootNode); CurTreeView.SetRootNode(BomTreeDatasMger.RootNode);
CurTreeView.SetRootVisible(visible: false); CurTreeView.SetRootVisible(visible: false);
CurTreeView.Select(id); CurTreeView.Select(id);
if (MFGBillUtil.GetUserParam<bool>(((AbstractDynamicFormPlugIn)(object)this).View, "IsExpandTree", false)) //if (MFGBillUtil.GetUserParam<bool>(((AbstractDynamicFormPlugIn)(object)this).View, "IsExpandTree", false))
{ //{
TreeNode treeNodeLst = BomTreeDatasMger.RootNode.children.First(); // TreeNode treeNodeLst = BomTreeDatasMger.RootNode.children.First();
WalkNode(CurTreeView, treeNodeLst); // WalkNode(CurTreeView, treeNodeLst);
CurTreeView.InvokeControlMethod("ExpandTree"); // CurTreeView.InvokeControlMethod("ExpandTree");
} //}
} }
} }
private void WalkNode1(TreeNode treeNodeLst, Dictionary<string, List<ChirdNode>> all, Dictionary<string, List<ChirdNode>> Examine, Dictionary<string, List<ChirdNode>> Disable, HashSet<string> hs) private void WalkNode1(TreeNode treeNodeLst, Dictionary<string, List<ChirdNode>> all, Dictionary<string, List<ChirdNode>> Examine, Dictionary<string, List<ChirdNode>> Disable, HashSet<string> hs)
{ {
Logger.Info("all.count", all.Count.ToString());
Logger.Info("Examine.count", Examine.Count.ToString());
Logger.Info("Disable.count", Disable.Count.ToString());
Logger.Info("hs.count", hs.Count.ToString());
var txt = ""; var txt = "";
var parameterDate = this.Model.ParameterData;//获取 物料清单-树形维护用户参数 var parameterDate = this.Model.ParameterData;//获取 物料清单-树形维护用户参数
char SplitStr = Convert.ToChar(parameterDate["SplitCode"]); char SplitStr = Convert.ToChar(parameterDate["SplitCode"]);
var strarry = treeNodeLst.text.Split(SplitStr); var strarry = treeNodeLst.text.Split(SplitStr);
var IsBomId = parameterDate["BomId"].ToString();
if (strarry.Length > 0) if (strarry.Length > 0)
{ {
var IsBomId = parameterDate["BomId"].ToString(); Logger.Info("IsBomId", IsBomId);
if (IsBomId == "True")//BOM版本是否勾选 if (IsBomId == "True")//BOM版本是否勾选
{ {
txt = strarry[1]; txt = strarry[1];
...@@ -539,7 +629,9 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID "; ...@@ -539,7 +629,9 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID ";
{ {
txt = strarry[0]; txt = strarry[0];
} }
Logger.Info("txt", txt);
} }
if (Examine.ContainsKey(txt)) if (Examine.ContainsKey(txt))
{ {
treeNodeLst.Forecolor = "#0000FF"; treeNodeLst.Forecolor = "#0000FF";
...@@ -548,35 +640,132 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID "; ...@@ -548,35 +640,132 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID ";
for (int i = 0; i < Examine[txt].Count; i++) for (int i = 0; i < Examine[txt].Count; i++)
{ {
TreeNode treeNode = new TreeNode(); TreeNode treeNode = new TreeNode();
treeNode.Number = Examine[txt][i].Number; if (IsBomId == "True")//BOM版本是否勾选
treeNode.Name = Examine[txt][i].Name; {
treeNode.parentid = Examine[txt][i].parentid; if (all.ContainsKey(Examine[txt][i].MaterialNumber))
treeNode.text = Examine[txt][i].text; {
treeNode.id = Examine[txt][i].Number; List<ChirdNode> chirds;
all.TryGetValue(Examine[txt][i].MaterialNumber, out chirds);
ChirdNode chird = chirds.First();
treeNode.Number = Examine[txt][i].Number;
treeNode.Name = Examine[txt][i].Name;
treeNode.parentid = Examine[txt][i].parentid;
treeNode.text = chird.Number + Examine[txt][i].text;
treeNode.id = Examine[txt][i].MaterialNumber;
}
else
{
treeNode.Number = Examine[txt][i].Number;
treeNode.Name = Examine[txt][i].Name;
treeNode.parentid = Examine[txt][i].parentid;
treeNode.text = Examine[txt][i].text;
treeNode.id = Examine[txt][i].MaterialNumber;
}
}
else
{
treeNode.Number = Examine[txt][i].Number;
treeNode.Name = Examine[txt][i].Name;
treeNode.parentid = Examine[txt][i].parentid;
treeNode.text = Examine[txt][i].text;
treeNode.id = Examine[txt][i].MaterialNumber;
}
nodes.Add(treeNode); nodes.Add(treeNode);
} }
treeNodeLst.children = nodes; treeNodeLst.children = nodes;
} }
else
if (Disable.ContainsKey(txt)) if (Disable.ContainsKey(txt))
{ {
treeNodeLst.Forecolor = "#EE0000"; treeNodeLst.Forecolor = "#EE0000";
List<TreeNode> nodes = new List<TreeNode>(); List<TreeNode> nodes = new List<TreeNode>();
// var a = Disable[treeNodeLst.text.Split('*')[0]].Count; // var a = Disable[treeNodeLst.text.Split('*')[0]].Count;
for (int i = 0; i < Disable[txt].Count; i++) for (int i = 0; i < Disable[txt].Count; i++)
{ {
TreeNode treeNode = new TreeNode(); TreeNode treeNode = new TreeNode();
treeNode.Number = Disable[txt][i].Number; if (IsBomId == "True")//BOM版本是否勾选
treeNode.Name = Disable[txt][i].Name; {
treeNode.parentid = Disable[txt][i].parentid; if (all.ContainsKey(Disable[txt][i].MaterialNumber))
treeNode.text = Disable[txt][i].text; {
List<ChirdNode> chirds;
all.TryGetValue(Disable[txt][i].MaterialNumber, out chirds);
ChirdNode chird = chirds.First();
treeNode.Number = Disable[txt][i].Number;
treeNode.Name = Disable[txt][i].Name;
treeNode.parentid = Disable[txt][i].parentid;
treeNode.text = chird.Number + Disable[txt][i].text;
treeNode.id = Disable[txt][i].MaterialNumber;
}
else
{
treeNode.Number = Disable[txt][i].Number;
treeNode.Name = Disable[txt][i].Name;
treeNode.parentid = Disable[txt][i].parentid;
treeNode.text = Disable[txt][i].text;
treeNode.id = Disable[txt][i].MaterialNumber;
}
}
else
{
treeNode.Number = Disable[txt][i].Number;
treeNode.Name = Disable[txt][i].Name;
treeNode.parentid = Disable[txt][i].parentid;
treeNode.text = Disable[txt][i].text;
treeNode.id = Disable[txt][i].MaterialNumber;
}
nodes.Add(treeNode); nodes.Add(treeNode);
} }
treeNodeLst.children = nodes; treeNodeLst.children = nodes;
} }
else
if (hs.Contains(txt)) if (hs.Contains(txt))
{ {
treeNodeLst.Forecolor = "#FF00FF"; treeNodeLst.Forecolor = "#FF00FF";
} }
else
if (all.ContainsKey(txt))
{
List<TreeNode> nodes = new List<TreeNode>();
//var a = Examine[treeNodeLst.text.Split('*')[0]].Count;
for (int i = 0; i < all[txt].Count; i++)
{
TreeNode treeNode = new TreeNode();
if (IsBomId == "True")//BOM版本是否勾选
{
if (all.ContainsKey(all[txt][i].MaterialNumber))
{
List<ChirdNode> chirds;
all.TryGetValue(all[txt][i].MaterialNumber, out chirds);
ChirdNode chird = chirds.First();
treeNode.Number = all[txt][i].Number;
treeNode.Name = all[txt][i].Name;
treeNode.parentid = all[txt][i].parentid;
treeNode.text = chird.Number + all[txt][i].text ;
treeNode.id = all[txt][i].MaterialNumber;
}
else
{
treeNode.Number = all[txt][i].Number;
treeNode.Name = all[txt][i].Name;
treeNode.parentid = all[txt][i].parentid;
treeNode.text = all[txt][i].text ;
treeNode.id = all[txt][i].MaterialNumber;
}
}
else
{
treeNode.Number = all[txt][i].Number;
treeNode.Name = all[txt][i].Name;
treeNode.parentid = all[txt][i].parentid;
treeNode.text = all[txt][i].text ;
treeNode.id = all[txt][i].MaterialNumber;
}
nodes.Add(treeNode);
}
treeNodeLst.children = nodes;
}
if (treeNodeLst.children.Count <= 0) if (treeNodeLst.children.Count <= 0)
{ {
return; return;
...@@ -682,7 +871,61 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID "; ...@@ -682,7 +871,61 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID ";
list.Add(bomForwardSourceDynamicRow.DataEntity); list.Add(bomForwardSourceDynamicRow.DataEntity);
return list; return list;
} }
private bool ShowCustomBomForm1(long bomFormParam, bool isFromSelectBill = false)
{
if (!ValidatePermission("6e44119a58cb4a8e86f6c385e14a17ad"))
{
((AbstractDynamicFormPlugIn)(object)this).View.ShowMessage(string.Format(ResManager.LoadKDString("没有“物料清单”的“查看”权限!", "015072000002210", SubSystemType.MFG)));
return false;
}
OperationStatus status = OperationStatus.VIEW;
if (bomFormParam > 0 && ValidatePermission("f323992d896745fbaab4a2717c79ce2e"))
{
status = OperationStatus.EDIT;
}
if (bomFormParam <= 0)
{
if (!ValidatePermission("fce8b1aca2144beeb3c6655eaf78bc34"))
{
((AbstractDynamicFormPlugIn)(object)this).View.ShowMessage(string.Format(ResManager.LoadKDString("没有“物料清单”的“新增”权限!", "015072000002209", SubSystemType.MFG)));
return false;
}
status = OperationStatus.ADDNEW;
}
IDynamicFormView view = ((AbstractDynamicFormPlugIn)(object)this).View.GetView(CustomCalendarBillPageId);
if (view == null)
{
BillShowParameter billShowParameter = new BillShowParameter();
billShowParameter.OpenStyle.ShowType = ShowType.InContainer;
billShowParameter.OpenStyle.TagetKey = "FPanel";
billShowParameter.FormId = "ENG_BOM";
billShowParameter.ParentPageId = ((AbstractDynamicFormPlugIn)(object)this).View.PageId;
billShowParameter.PageId = CustomCalendarBillPageId;
billShowParameter.PKey = bomFormParam.ToString();
billShowParameter.Status = status;
billShowParameter.AddBillOptionParameter("FSaveAndNew", false);
billShowParameter.AddBillOptionParameter("FSaveAndSubmit", false);
billShowParameter.CustomParams["ShowConfirmDialogWhenChangeOrg"] = "false";
// ShowBillForm(((AbstractDynamicFormPlugIn)(object)this).View, billShowParameter, bomFormParam);
view.ShowForm(billShowParameter);
}
else
{
// ((AbstractDynamicFormPlugIn)(object)this).View.Session["FormInputParam"] = bomFormParam;
BillOpenParameter billOpenParameter = (BillOpenParameter)view.OpenParameter;
billOpenParameter.PkValue = bomFormParam.ToString();
billOpenParameter.Status = status;
billOpenParameter.CreateFrom = CreateFrom.Default;
billOpenParameter.SetCustomParameter("ShowConfirmDialogWhenChangeOrg", "false");
if (isFromSelectBill)
{
billOpenParameter.SetCustomParameter("IsFromSelectBill", "true");
}
view.Refresh();
((AbstractDynamicFormPlugIn)(object)this).View.SendDynamicFormAction(view);
}
return true;
}
private bool ShowCustomBomForm(BomExpandNodeTreeMode bomFormParam, bool isFromSelectBill = false) private bool ShowCustomBomForm(BomExpandNodeTreeMode bomFormParam, bool isFromSelectBill = false)
{ {
if (!ValidatePermission("6e44119a58cb4a8e86f6c385e14a17ad")) if (!ValidatePermission("6e44119a58cb4a8e86f6c385e14a17ad"))
...@@ -861,10 +1104,10 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID "; ...@@ -861,10 +1104,10 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID ";
List<NetworkCtrlResult> networkCtrlResults = null; List<NetworkCtrlResult> networkCtrlResults = null;
try try
{ {
if (!DoStartParentBomNetworkCtrl(bachDealOper, out networkCtrlResults)) //if (!DoStartParentBomNetworkCtrl(bachDealOper, out networkCtrlResults))
{ //{
return; // return;
} //}
IOperationResult operationResult = null; IOperationResult operationResult = null;
List<KeyValuePair<object, object>> list = null; List<KeyValuePair<object, object>> list = null;
List<object> list2 = null; List<object> list2 = null;
...@@ -908,7 +1151,7 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID "; ...@@ -908,7 +1151,7 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID ";
} }
finally finally
{ {
MFGCommonUtil.DoCommitNetworkCtrl(((AbstractDynamicFormPlugIn)(object)this).View.Context, networkCtrlResults); //MFGCommonUtil.DoCommitNetworkCtrl(((AbstractDynamicFormPlugIn)(object)this).View.Context, networkCtrlResults);
} }
} }
...@@ -926,10 +1169,10 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID "; ...@@ -926,10 +1169,10 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID ";
case "tbSaveTemp": case "tbSaveTemp":
case "tbSave": case "tbSave":
case "tbSplitSave": case "tbSplitSave":
if (!DoStartParentBomNetworkCtrl(CurSelNodeData.EntryId, out networkCtrlResults)) //if (!DoStartParentBomNetworkCtrl(CurSelNodeData.EntryId, out networkCtrlResults))
{ //{
return; // return;
} //}
break; break;
} }
switch (barItemKey) switch (barItemKey)
...@@ -949,7 +1192,7 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID "; ...@@ -949,7 +1192,7 @@ left join T_BD_MATERIAL_L l on stepCTE.子项物料=l.FMATERIALID ";
} }
finally finally
{ {
MFGCommonUtil.DoCommitNetworkCtrl(((AbstractDynamicFormPlugIn)(object)this).View.Context, networkCtrlResults); //MFGCommonUtil.DoCommitNetworkCtrl(((AbstractDynamicFormPlugIn)(object)this).View.Context, networkCtrlResults);
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论