修改申请查询=》Bom清单

master
Yang 2 years ago
parent 70599d3c02
commit c03c3c409c

@ -375,7 +375,7 @@ namespace FactorySystemApi.Controllers
TFS_Formula formula = formulas[0]; TFS_Formula formula = formulas[0];
OAService oAService = new OAService(); OAService oAService = new OAService();
string bomListStr = ""; string bomListStr = "";
Dictionary<string, object> bomResult = null;
List<Specifications> specifList = new List<Specifications>() { new Specifications() }; List<Specifications> specifList = new List<Specifications>() { new Specifications() };
specifList[0].SP = formula.FPlmCode; specifList[0].SP = formula.FPlmCode;
@ -392,88 +392,315 @@ namespace FactorySystemApi.Controllers
if (restResult != null && restResult.data != null) if (restResult != null && restResult.data != null)
{ {
List<BomModel> bomList = JsonConvert.DeserializeObject<List<BomModel>>(restResult.data.ToString()); List<BomModel> bomList = JsonConvert.DeserializeObject<List<BomModel>>(restResult.data.ToString());
string materialCodes = ",";
string testCodes = ",";
//string materialCodes = ",";
//string testCodes = ",";
if (bomList != null && bomList.Count > 0) if (bomList != null && bomList.Count > 0)
{ {
List<BomModel> subBomList = bomList[0].Specifications; bomResult = CheckBomMaterial(bomList, 0, new Random());
//List<BomModel> subBomList = bomList[0].Specifications;
//if (subBomList != null && subBomList.Count > 0)
//{
// foreach(BomModel bom in subBomList)
// {
// string bomType = bom.Type.ToLower(); // 转小写
// if (bomType == "a" || bomType == "f")
// {
// bom.ABomType = "20";
// }
// else if (bomType == "b" || bomType == "bb" || bomType == "i" || bomType == "iz")
// {
// bom.ABomType = "30";
// }
// else
// {
// bom.ABomType = "40";
// }
// if ("40".Equals(bom.ABomType))
// {
// bom.ASapCode = bom.SP_VALUE;
// materialCodes = materialCodes + bom.ASapCode + ",";
// }
// else
// {
// bom.ATestCode = bom.SP_VALUE;
// testCodes = testCodes + bom.ATestCode + ",";
// }
// }
// List<TFS_ViewMaterial> viewsByMaterialCodes = FormulaBll.GetViewByMaterialCodes(materialCodes);
// List<TFS_ViewMaterial> viewsByTestCodes = FormulaBll.GetViewByTestCodes(testCodes);
// foreach (BomModel bom in subBomList)
// {
// if ("40".Equals(bom.ABomType))
// {
// if (viewsByMaterialCodes != null && viewsByMaterialCodes.Count > 0)
// {
// TFS_ViewMaterial view = viewsByMaterialCodes.Find(v => v.FBaseMaterialCode.Equals(bom.ASapCode));
// if (view != null)
// {
// bom.AMaterialCode = view.FSaleOldMaterialCode;
// }
// }
// }
// else
// {
// if (viewsByTestCodes != null && viewsByTestCodes.Count > 0)
// {
// TFS_ViewMaterial view = viewsByTestCodes.Find(v => v.FBaseTestCode.Equals(bom.ATestCode));
// if (view != null)
// {
// bom.AMaterialCode = view.FSaleOldMaterialCode;
// bom.ASapCode = view.FBaseMaterialCode;
// }
// }
// }
// }
// int formulaApplyHistoryId = FormulaBll.AddFormulaApplyHistroy(formula, user.FName, user.FID);
// resultObj.Add("applyHistoryId", formulaApplyHistoryId);
// resultObj.Add("bomList", bomList);
// bomListStr = JsonConvert.SerializeObject(resultObj);
//}
}
}
apiResult.Data = bomResult;
}
}, apiResult, Request);
}
/// <summary>
/// 递归梳理BOM
/// </summary>
/// <param name="dataList">需要解析的集合</param>
/// <param name="materLevel">层级</param>
/// <param name="random">内部定义会有问题,需要外部传入</param>
/// <param name="parentId">父子级关系ID</param>
private Dictionary<string, object> CheckBomMaterial(List<BomModel> dataList, int materLevel, Random random, int parentId = -1)
{
List<TFS_Material> mateList = new List<TFS_Material>();
List<TFS_ViewMaterial> viewList = new List<TFS_ViewMaterial>();
List<TFS_Formula> formulaList = new List<TFS_Formula>();
string ids1 = "", ids2 = "";//需求变更ids2弃用
string materialCodes = ",";
string testCodes = ",";
if (dataList != null && dataList.Count > 0)
{
foreach (BomModel item in dataList)
{
if (!string.IsNullOrWhiteSpace(item.SP))
{
item.Code = item.SP;
}
if (!string.IsNullOrWhiteSpace(item.SP_Version))
{
item.Version = item.SP_Version;
}
if (!string.IsNullOrWhiteSpace(item.SP_VALUE))
{
item.TestNO = item.SP_VALUE;
}
if (subBomList != null && subBomList.Count > 0) int dataId = random.Next(1, 99) * random.Next(1, 99);
dataId += random.Next(10, 99) * random.Next(10, 99) * 2;
dataId += random.Next(1, 99) * random.Next(1, 99) * 10;
TFS_Material material = new TFS_Material()
{ {
foreach(BomModel bom in subBomList) FID = DateTime.Now.DayOfYear * 10 + dataId,
FPlmCode = item.Code,
FName = item.Name,
//FCode = item.Code,
FType = item.Type.ToLower(),
//FTestCode = item.TestNO,
FVersionCode = item.Version,
FParentID = parentId
};
TFS_ViewMaterial view = new TFS_ViewMaterial()
{ {
string bomType = bom.Type.ToLower(); // 转小写 //FBaseFameCode = "",
if (bomType == "a" || bomType == "f") //FBaseMaterialCode = material.FCode,
//FBaseTestCode = material.FTestCode,
FExtraQuantity = item.Quantity,
FBaseMaterialDesc = material.FName,
FLevel = materLevel,
FBomMaterialID = material.FID
};
if (material.FType == "a" || material.FType == "f")
{ {
bom.ABomType = "20"; material.FType = "20";
} }
else if (bomType == "b" || bomType == "bb" || bomType == "i" || bomType == "iz") else if (material.FType == "b" || material.FType == "bb" || material.FType == "i" || material.FType == "iz")
{ {
bom.ABomType = "30"; material.FType = "30";
} }
else else
{ {
bom.ABomType = "40"; material.FType = "40";
} }
if ("40".Equals(bom.ABomType)) if ("40".Equals(material.FType))
{ {
bom.ASapCode = bom.SP_VALUE; item.ASapCode = item.SP_VALUE;
materialCodes = materialCodes + bom.ASapCode + ","; materialCodes = materialCodes + item.ASapCode + ",";
item.ATestCode = "";
} }
else else
{ {
bom.ATestCode = bom.SP_VALUE; item.ATestCode = item.SP_VALUE;
testCodes = testCodes + bom.ATestCode + ","; testCodes = testCodes + item.ATestCode + ",";
}
} }
List<TFS_ViewMaterial> viewsByMaterialCodes = FormulaBll.GetViewByMaterialCodes(materialCodes); List<TFS_ViewMaterial> viewsByMaterialCodes = FormulaBll.GetViewByMaterialCodes(materialCodes);
List<TFS_ViewMaterial> viewsByTestCodes = FormulaBll.GetViewByTestCodes(testCodes); List<TFS_ViewMaterial> viewsByTestCodes = FormulaBll.GetViewByTestCodes(testCodes);
foreach (BomModel bom in subBomList) MaterialBll materialBll = new MaterialBll();
{ TFS_Material tFS_Material = materialBll.GetMaterialListByFTestCode(item.SP_VALUE).LastOrDefault();
if ("40".Equals(bom.ABomType))
{ if ("40".Equals(material.FType))
if (viewsByMaterialCodes != null && viewsByMaterialCodes.Count > 0)
{ {
TFS_ViewMaterial view = viewsByMaterialCodes.Find(v => v.FBaseMaterialCode.Equals(bom.ASapCode)); item.AMaterialCode = item.SP_VALUE;
if (view != null) if (tFS_Material != null)
{ {
bom.AMaterialCode = view.FSaleOldMaterialCode; item.ASapCode = tFS_Material.OldCode;
} }
else
{
item.ASapCode = "";
} }
} }
else else
{ {
if (viewsByTestCodes != null && viewsByTestCodes.Count > 0) if (viewsByTestCodes != null && viewsByTestCodes.Count > 0)
{ {
TFS_ViewMaterial view = viewsByTestCodes.Find(v => v.FBaseTestCode.Equals(bom.ATestCode)); //TFS_ViewMaterial view2 = viewsByTestCodes.Find(v => v.FBaseTestCode.Equals(item.ATestCode));
if (view != null)
if (tFS_Material != null)
{ {
bom.AMaterialCode = view.FSaleOldMaterialCode; item.AMaterialCode = tFS_Material.FCode;
bom.ASapCode = view.FBaseMaterialCode; item.ASapCode = tFS_Material.OldCode;
//item.AMaterialCode = view2.FSaleOldMaterialCode;
//item.ASapCode = view2.FBaseMaterialCode;
} }
else
{
item.ASapCode = "";
} }
} }
} }
item.ABomType = "kg";
int formulaApplyHistoryId = FormulaBll.AddFormulaApplyHistroy(formula, user.FName, user.FID); if (item.Name.Contains("@"))
{
resultObj.Add("applyHistoryId", formulaApplyHistoryId); item.EnName = "甜味";
resultObj.Add("bomList", bomList);
bomListStr = JsonConvert.SerializeObject(resultObj);
} }
else if (item.Name.Contains("□"))
{
item.EnName = "咸味";
} }
else {
item.EnName = "";
} }
apiResult.Data = bomListStr; if (materLevel == 0)
{
material.FType = "20";
ids2 = material.FID + "";
}
if (material.FType == "40")
{
material.FCode = item.TestNO;
//material.FPlmCode = "";
}
int.TryParse(material.FType, out int mType);
if (materLevel == 1) ids1 += material.FID + ",";
switch (mType)
{
case (int)Constant.MaterialType.:
material.FTestCode = item.TestNO;
view.FBaseTestCode = item.TestNO;
view.FViewType = 1;
break;
case (int)Constant.MaterialType.:
view.FViewType = (int)Constant.ViewType.;
material.FTestCode = item.TestNO;
view.FBaseTestCode = item.TestNO;
break;
case (int)Constant.MaterialType.:
view.FViewType = material.FName.Contains("香基") ? (int)Constant.ViewType. : (int)Constant.ViewType.;
material.FTestCode = item.TestNO;
view.FBaseTestCode = item.TestNO;
break;
case (int)Constant.MaterialType.:
view.FViewType = (int)Constant.ViewType.;
view.FBaseMaterialCode = material.FCode;
//默认值不同
view.FPurchaseCompany = "kg";
view.FPurchaseCompanyCount = "1";
view.FPurchaseBaseCompanyCount = "1000";
view.FSaleAccountSettingGroup = "15";
view.FStorageTotalShelfLife = "7300";
view.FMRP2ExternalStoragePlace = "1000";
view.FPlanUnlimitedOverDelivery = "";
view.FAccountPriceControl = "V";
view.FAccountPriceDetermine = "2";
view.FAccountAccessType = "1000";
view.FAccountSaleOrderInventory = "1010";
break;
} }
}, apiResult, Request); mateList.Add(material);
viewList.Add(view);
if (item.Specifications != null && item.Specifications.Count > 0)
{
Dictionary<string, object> childData = CheckBomMaterial(item.Specifications, materLevel + 1, random, material.FID);
if (materLevel >= 1)
{
formulaList.Add(new TFS_Formula()
{
FID = -1,
FName = material.FName,
FType = material.FType,
FTestCode = material.FTestCode,
FVersionCode = material.FVersionCode,
FPlmCode = string.IsNullOrEmpty(material.FPlmCode) ? material.FCode : material.FPlmCode
});
} }
mateList.AddRange((List<TFS_Material>)childData["mateList"]);
viewList.AddRange((List<TFS_ViewMaterial>)childData["viewList"]);
formulaList.AddRange((List<TFS_Formula>)childData["formulaList"]);
ids1 = ids1.Trim(',') + "," + childData["formulaIds"] + ",";
ids2 = ids2.Trim(',') + "," + childData["halfIds"] + ",";
}
}
}
return new Dictionary<string, object>
{
{ "mateList", mateList },
{ "viewList", viewList },
{ "formulaList", formulaList },
{ "formulaIds", ids1.Trim(',') },
{ "halfIds", ids2.Trim(',') },
{ "bomList", dataList }
};
}
/// <summary> /// <summary>
/// 根据物料号列表获取物料列表 /// 根据物料号列表获取物料列表

@ -700,7 +700,7 @@ namespace FactorySystemApi.Controllers
FName = item.Name, FName = item.Name,
//FCode = item.Code, //FCode = item.Code,
FType = item.Type.ToLower(), FType = item.Type.ToLower(),
FTestCode = item.TestNO, //FTestCode = item.TestNO,
FVersionCode = item.Version, FVersionCode = item.Version,
FParentID = parentId FParentID = parentId
}; };
@ -709,7 +709,7 @@ namespace FactorySystemApi.Controllers
{ {
//FBaseFameCode = "", //FBaseFameCode = "",
//FBaseMaterialCode = material.FCode, //FBaseMaterialCode = material.FCode,
FBaseTestCode = material.FTestCode, //FBaseTestCode = material.FTestCode,
FExtraQuantity = item.Quantity, FExtraQuantity = item.Quantity,
FBaseMaterialDesc = material.FName, FBaseMaterialDesc = material.FName,
FLevel = materLevel, FLevel = materLevel,
@ -735,8 +735,8 @@ namespace FactorySystemApi.Controllers
} }
if (material.FType == "40") if (material.FType == "40")
{ {
material.FCode = material.FPlmCode; material.FCode = item.TestNO;
material.FPlmCode = ""; //material.FPlmCode = "";
} }
int.TryParse(material.FType, out int mType); int.TryParse(material.FType, out int mType);
@ -744,13 +744,19 @@ namespace FactorySystemApi.Controllers
switch (mType) switch (mType)
{ {
case (int)Constant.MaterialType.: case (int)Constant.MaterialType.:
material.FTestCode = item.TestNO;
view.FBaseTestCode=item.TestNO;
view.FViewType = 1; view.FViewType = 1;
break; break;
case (int)Constant.MaterialType.: case (int)Constant.MaterialType.:
view.FViewType = (int)Constant.ViewType.; view.FViewType = (int)Constant.ViewType.;
material.FTestCode = item.TestNO;
view.FBaseTestCode = item.TestNO;
break; break;
case (int)Constant.MaterialType.: case (int)Constant.MaterialType.:
view.FViewType = material.FName.Contains("香基") ? (int)Constant.ViewType. : (int)Constant.ViewType.; view.FViewType = material.FName.Contains("香基") ? (int)Constant.ViewType. : (int)Constant.ViewType.;
material.FTestCode = item.TestNO;
view.FBaseTestCode = item.TestNO;
break; break;
case (int)Constant.MaterialType.: case (int)Constant.MaterialType.:
view.FViewType = (int)Constant.ViewType.; view.FViewType = (int)Constant.ViewType.;
@ -1221,11 +1227,20 @@ namespace FactorySystemApi.Controllers
else if (field.FName == "固定损耗数量" && intType == 2) else if (field.FName == "固定损耗数量" && intType == 2)
{ {
selectSql += string.Format(@"isnull(CASE selectSql += string.Format(@"isnull(CASE
WHEN TFS_Material.FFixedLoss='()' THEN '' WHEN TFS_Material.FFixedLoss='()' OR TFS_Material.FFixedLoss=0 THEN ''
ELSE TFS_Material.FFixedLoss ELSE TFS_Material.FFixedLoss
END END
,'') as '{1}'", field.FField, field.FName); ,'') as '{1}'", field.FField, field.FName);
} }
//else if (field.FName == "组件损耗率" && intType == 5)
//{
// selectSql += string.Format(@"isnull(
// isnull(
// (select CAST ( 100.0 - TFS_MaterialInfo.FTheoryYield AS VARCHAR ) from TFS_MaterialInfo where FDataID=(select TOP 1 FMaterialID from TFS_ViewMaterial where FTeamID={0}) AND TFS_MaterialInfo.FTheoryYield <>'(空)' AND TFS_MaterialInfo.FTheoryYield<>'' AND TFS_MaterialInfo.FTheoryYield IS NOT NULL),
// ''
// ),'') AS '组件损耗率'", teamId);
//}
else else
{ {
selectSql += string.Format("isnull({0},'') as '{1}'", field.FField, field.FName); selectSql += string.Format("isnull({0},'') as '{1}'", field.FField, field.FName);
@ -1473,6 +1488,7 @@ namespace FactorySystemApi.Controllers
DataTable dataList2 = dataList.Copy(); DataTable dataList2 = dataList.Copy();
for (int i = 0; i < rowCount; i++) for (int i = 0; i < rowCount; i++)
{ {
dataList2.Rows[i]["版本"] = "0002";
if (isChange && dataList2.Rows[i]["BOM用途"].ToString() == "1") if (isChange && dataList2.Rows[i]["BOM用途"].ToString() == "1")
{ {
dataList2.Rows[i]["BOM用途"] = "Y"; dataList2.Rows[i]["BOM用途"] = "Y";

@ -12,6 +12,7 @@
<appSettings> <appSettings>
<add key="ApiAuthSecretKey" value="zhkxfs" /> <add key="ApiAuthSecretKey" value="zhkxfs" />
<!--<add key="ConnectionString" value="server=49.235.68.145,3456;uid=sa;pwd=zhenxuan@2019;database=FactorySystem" />--> <!--<add key="ConnectionString" value="server=49.235.68.145,3456;uid=sa;pwd=zhenxuan@2019;database=FactorySystem" />-->
<!--<add key="ConnectionString" value="server=192.168.8.157,12580;uid=tfs;pwd=tfs2022;database=FactorySystem" />-->
<add key="ConnectionString" value="server=192.168.8.157,12580;uid=tfs;pwd=tfs2022;database=FactorySystem" /> <add key="ConnectionString" value="server=192.168.8.157,12580;uid=tfs;pwd=tfs2022;database=FactorySystem" />
<!--<add key="ConnectionString" value="server=120.55.81.57;uid=sa;pwd=1qaz@WSX;database=FactorySystem" />--> <!--<add key="ConnectionString" value="server=120.55.81.57;uid=sa;pwd=1qaz@WSX;database=FactorySystem" />-->
@ -170,7 +171,7 @@
<endpoint address="http://sappoqas.hbglobal.com:50000/XISOAPAdapter/MessageServlet?senderParty=&amp;senderService=ZMCS_FLAVOR&amp;receiverParty=&amp;receiverService=&amp;interface=si_pp080_mcs_sender&amp;interfaceNamespace=http%3A%2F%2Fwww.zmc.com%2Fflavor%2Fpp" <endpoint address="http://sappoqas.hbglobal.com:50000/XISOAPAdapter/MessageServlet?senderParty=&amp;senderService=ZMCS_FLAVOR&amp;receiverParty=&amp;receiverService=&amp;interface=si_pp080_mcs_sender&amp;interfaceNamespace=http%3A%2F%2Fwww.zmc.com%2Fflavor%2Fpp"
binding="basicHttpBinding" bindingConfiguration="si_pp080_mcs_senderBinding" binding="basicHttpBinding" bindingConfiguration="si_pp080_mcs_senderBinding"
contract="Sap_ProductVersion.si_pp080_mcs_sender" name="HTTP_Port" /> contract="Sap_ProductVersion.si_pp080_mcs_sender" name="HTTP_Port" />
<endpoint address="http://sappodev.hbglobal.com:50000/XISOAPAdapter/MessageServlet?senderParty=&amp;senderService=ZMCS_FLAVOR&amp;receiverParty=&amp;receiverService=&amp;interface=si_mm104_mcs_sender&amp;interfaceNamespace=http%3A%2F%2Fwww.zmc.com%2Fflavor%2Fmm" <endpoint address="http://sappoqas.hbglobal.com:50000/XISOAPAdapter/MessageServlet?senderParty=&amp;senderService=ZMCS_FLAVOR&amp;receiverParty=&amp;receiverService=&amp;interface=si_mm104_mcs_sender&amp;interfaceNamespace=http%3A%2F%2Fwww.zmc.com%2Fflavor%2Fmm"
binding="basicHttpBinding" bindingConfiguration="si_mm104_mcs_senderBinding" binding="basicHttpBinding" bindingConfiguration="si_mm104_mcs_senderBinding"
contract="Sap_ViewMaterial.si_mm104_mcs_sender" name="HTTP_Port" /> contract="Sap_ViewMaterial.si_mm104_mcs_sender" name="HTTP_Port" />
<endpoint address="https://plmtest.hbflavor.com/PlmWebService/OAService.asmx" <endpoint address="https://plmtest.hbflavor.com/PlmWebService/OAService.asmx"

@ -43,6 +43,7 @@ namespace FactorySystemBll
if (factory == null) temp.FFactoryID = -1; if (factory == null) temp.FFactoryID = -1;
else temp.FFactoryID = factory.FID; else temp.FFactoryID = factory.FID;
} }
temp.OldCode = temp.FOldID.ToString();
temp.FAddDate = temp.FEditDate = DateTime.Now; temp.FAddDate = temp.FEditDate = DateTime.Now;
temp.FEditUser = userId; temp.FEditUser = userId;
insertList.Add(temp); insertList.Add(temp);
@ -69,6 +70,7 @@ namespace FactorySystemBll
} }
} }
} }
temp.OldCode = temp.FOldID.ToString();
} }
updateList.Add(temp); updateList.Add(temp);
} }

@ -488,5 +488,9 @@ namespace FactorySystemModel.SqlSugarModel
/// Nullable:False /// Nullable:False
/// </summary> /// </summary>
public string FSAPDescription { get; set; } public string FSAPDescription { get; set; }
/// <summary>
/// 接收旧码字段
/// </summary>
public string OldCode { get; set; }
} }
} }

Loading…
Cancel
Save