You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

228 lines
11 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using FactorySystemCommon;
using FactorySystemModel.SqlSugarModel;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using FactorySystemModel.EnumModel;
using FactorySystemModel.RequestModel;
using FactorySystemModel.ResponseModel;
namespace FactorySystemBll
{
public class FormulaBll
{
/// <summary>
/// 获取配置信息
/// </summary>
public object GetBasicList(int type)
{
return AppSettingsHelper.GetSqlSugar().Queryable<TBasicCode>().Where(s => s.FType == type && s.FState == 1).ToList();
}
public List<FormulaRow> GetList(FormulaQuery tr, out int totalNumber)
{
totalNumber = 0;
var db = AppSettingsHelper.GetSqlSugar();
return db.Queryable<TFS_Formula>().Where(s => s.FTestCode != "")
.WhereIF(tr.FName != null, s => s.FName.Contains(tr.FName) || s.FPlmCode.Contains(tr.FPlmCode) || s.FTestCode.Contains(tr.FTestCode) || s.FVersionCode.Contains(tr.FVersionCode))
.Select<FormulaRow>("*").ToPageList(tr.FPageIndex, tr.FPageSize, ref totalNumber);
}
/// <summary>
/// 配方数据比对
/// </summary>
public int DockingRecipeData(List<TFS_Formula> formulaList, int userId)
{
formulaList = formulaList.Where(s => !string.IsNullOrEmpty(s.FPlmCode)).ToList();
if (formulaList.Count == 0) return 1;
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
List<TFS_Formula> updateList = new List<TFS_Formula>();
List<TFS_Formula> insertList = new List<TFS_Formula>();
List<TFS_Factory> factorys = db.Queryable<TFS_Factory>().OrderBy(s => s.FDeleted).ToList();
List<TFS_Material> materials = db.Queryable<TFS_Material>().OrderBy(s => s.FDeleted).ToList();
List<TBasicCode> typeList = db.Queryable<TBasicCode>().Where(s => s.FType == (int)Constant.BasicCode.).ToList();
//根据PLM码分组
foreach (var item in formulaList.GroupBy(s => s.FPlmCode))
{
List<TFS_Formula> formulas = db.Queryable<TFS_Formula>().Where(s => s.FPlmCode == item.Key
&& s.FDeleted != (int)Constant.DeleteCode.).ToList();
List<TFS_Formula> temps = item.Where(s1 => !string.IsNullOrEmpty(s1.FVersionCode.Trim())).ToList();
if (temps.Count > 0)//版本号非空
{
//根据版本号分组
foreach (var item2 in item.GroupBy(ss => ss.FVersionCode.Trim()))
{
TFS_Formula formula = formulas.Find(d => d.FVersionCode == item2.Key.Trim());
if (formula == null) formula = formulas.Find(d => d.FVersionCode == "");
TFS_Formula temp = item2.FirstOrDefault();
if (formula != null)
{
formula.FName = temp.FName.Trim();
formula.FDesc = (string.IsNullOrEmpty(temp.FDesc) ? formula.FDesc : temp.FDesc).Trim();
formula.FType = (string.IsNullOrEmpty(temp.FType) ? formula.FType : temp.FType).Trim();
formula.FTestCode = (string.IsNullOrEmpty(temp.FTestCode) ? formula.FTestCode : temp.FTestCode).Trim();
formula.FProductCode = (string.IsNullOrEmpty(temp.FProductCode) ? formula.FProductCode : temp.FProductCode).Trim();
formula.FFactoryCode = (string.IsNullOrEmpty(temp.FFactoryCode) ? formula.FFactoryCode : temp.FFactoryCode).Trim();
formula.FVersionCode = (string.IsNullOrEmpty(temp.FVersionCode) ? formula.FVersionCode : temp.FVersionCode).Trim();
if (!string.IsNullOrEmpty(formula.FFactoryCode))
{
TFS_Factory factory = factorys.Find(s => s.FCode == formula.FFactoryCode);
if (factory == null) factory = factorys.Find(s => s.FName == formula.FFactoryCode);
if (factory == null) formula.FFactoryID = -1;
else formula.FFactoryID = factory.FID;
}
formula.FEditDate = DateTime.Now;
formula.FEditUser = userId;
/**
* 20230401 新增
* 表中增加:
* 转规格人员 FConversionPersonnel
* 开发日期 FDevDate
* BOM版本号 FBomVersionCode
* **/
formula.FConversionPersonnel = (string.IsNullOrEmpty(temp.FConversionPersonnel) ? formula.FConversionPersonnel : temp.FConversionPersonnel).Trim();
formula.FDevDate = DateTime.Now;
formula.FBomVersionCode = (string.IsNullOrEmpty(temp.FBomVersionCode) ? formula.FBomVersionCode : temp.FBomVersionCode).Trim();
// 20230401 根据试验号获取生产号
if (materials != null && materials.Count > 0)
{
TFS_Material material = materials.Find(m => m.FTestCode == formula.FTestCode);
if (material != null && !string.IsNullOrEmpty(material.FCode))
{
formula.FProductCode = material.FCode;
}
}
TBasicCode bType = typeList.Find(s => s.FName == formula.FType || s.FValue == formula.FType);
if (bType != null) formula.FType = bType.FValue;
updateList.Add(formula);
}
else
{
if (!string.IsNullOrEmpty(temp.FFactoryCode))
{
TFS_Factory factory = factorys.Find(s => s.FCode == temp.FFactoryCode);
if (factory == null) factory = factorys.Find(s => s.FName == temp.FFactoryCode);
if (factory == null) temp.FFactoryID = -1;
else temp.FFactoryID = factory.FID;
}
temp.FID = -1;
temp.FAddDate = temp.FEditDate = DateTime.Now;
temp.FEditUser = userId;
/**
* 20230401 新增
* 表中增加:
* 转规格人员 FConversionPersonnel
* 开发日期 FDevDate
* BOM版本号 FBomVersionCode
* **/
temp.FDevDate = DateTime.Now;
// 20230401 根据试验号获取生产号
if (materials != null && materials.Count > 0)
{
TFS_Material material = materials.Find(m => m.FTestCode == temp.FTestCode);
if (material != null && !string.IsNullOrEmpty(material.FCode))
{
temp.FProductCode = material.FCode;
}
}
TBasicCode bType = typeList.Find(s => s.FName == temp.FType || s.FValue == temp.FType);
if (bType != null) temp.FType = bType.FValue;
insertList.Add(temp);
}
}
}
else if (formulas == null || formulas.Count == 0)
{
TFS_Formula temp = item.FirstOrDefault();
temp.FAddDate = temp.FEditDate = DateTime.Now;
temp.FEditUser = userId;
/**
* 20230401 新增
* 表中增加:
* 转规格人员 FConversionPersonnel
* 开发日期 FDevDate
* BOM版本号 FBomVersionCode
* **/
temp.FDevDate = DateTime.Now;
// 20230401 根据试验号获取生产号
if (materials != null && materials.Count > 0)
{
TFS_Material material = materials.Find(m => m.FTestCode == temp.FTestCode);
if (material != null && !string.IsNullOrEmpty(material.FCode))
{
temp.FProductCode = material.FCode;
}
}
insertList.Add(temp);
}
}
try
{
db.BeginTran();
if (updateList.Count > 0)
{
for (int i = 0; i < updateList.Count; i++)
{
db.Updateable(updateList[i]).IgnoreColumns(true).ExecuteCommand();
}
}
if (insertList.Count > 0)
{
for (int i = 0; i < insertList.Count; i++)
{
db.Insertable(insertList[i]).IgnoreColumns(true).ExecuteCommand();
}
}
db.CommitTran();
return 1;
}
catch (Exception)
{
db.RollbackTran();
}
return 0;
}
/// <summary>
/// 对接SAP配方同步
/// </summary>
public int DockSapFormula(List<TFS_Formula> formulaList)
{
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
int okCount = 0;
db.BeginTran();
try
{
foreach (TFS_Formula item in formulaList)
{
TFS_Formula temp = db.Queryable<TFS_Formula>().Where(s => s.FName == item.FName && s.FFactoryID == item.FFactoryID
&& s.FTestCode == item.FTestCode).First();
if (string.IsNullOrEmpty(item.FType)) item.FType = "";
if (temp == null) okCount += db.Insertable(item).IgnoreColumns(true).ExecuteCommand();
}
db.CommitTran();
}
catch (Exception ex)
{
ExceptionHelper.AddSystemJournal(null, formulaList, ex.Message, -1, "DockSapFormulaDb");
db.RollbackTran();
}
return okCount;
}
}
}