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.
184 lines
8.5 KiB
184 lines
8.5 KiB
using Quartz;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace ICSSoft.FromERP
|
|
{
|
|
/// <summary>
|
|
/// 产品Bom(锐腾)
|
|
/// </summary>
|
|
public class IcsSBom_Rhtyon : IJob
|
|
{
|
|
private static object key = new object();
|
|
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
|
public void Execute(IJobExecutionContext context)
|
|
{
|
|
try
|
|
{
|
|
lock (key)
|
|
{
|
|
log.Info("开始……………………………………………………………………");
|
|
Execute();
|
|
log.Info("结束……………………………………………………………………");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.ToString());
|
|
}
|
|
}
|
|
|
|
public void Execute()
|
|
{
|
|
try
|
|
{
|
|
string conStr = ICSHelper.GetConnectString();
|
|
string Namespace = this.GetType().Namespace;
|
|
//string Class = this.GetType().Name;
|
|
DataTable dt = ICSHelper.GetERPDB(conStr);
|
|
foreach (DataRow dr in dt.Rows)
|
|
{
|
|
string erpName = ICSHelper.GetConfigString()["ERPDB"];
|
|
string TenantId = dr["TenantId"].ToString();
|
|
string TenantCode = dr["TenantCode"].ToString();
|
|
string ErpId = dr["ErpID"].ToString(); //erpID
|
|
string Class = this.GetType().Name + TenantCode;
|
|
erpName = string.Format(erpName, TenantId);
|
|
#region SQL
|
|
string sql = @" select distinct A2.[ID] as 料品ID,
|
|
A2.[Code] as 料品编码,
|
|
A2.Name as 料品名称,
|
|
A4.Description as 料品描述,
|
|
A3.ID as 子阶料ID,
|
|
A3.[Code] as 子阶料编码,
|
|
A3.[Name] as 子阶料名称,
|
|
A5.Description as 子阶料描述,
|
|
A.FixedScrap as 固定损耗,
|
|
A.Scrap as 变动损耗,
|
|
case when A.ScrapType=0 then '单一损耗' when A.ScrapType=1 then '阶梯损耗' else '' end as 损耗类型,
|
|
isnull( A6.[Code],'') as 项目号,
|
|
isnull( A.[ECNCode],'') as 工程变更号,
|
|
A.[UsageQty],
|
|
a.ParentQty,
|
|
cast(isnull( A.[UsageQty],0)/isnull( a.ParentQty,1) as decimal(18,6)) 子阶料计量数量,
|
|
A.[ItemVersionCode] as 子阶料物料版本,
|
|
A.[EffectiveDate] as 生效日期,
|
|
isnull( A.IsSpecialUseItem,'') as 管控类型,
|
|
A.[DisableDate] as 失效日期,
|
|
A.[Sequence] as 次序,
|
|
A.[IsEffective] as 有效,
|
|
A1.[BOMVersionCode] as 母料版本号,
|
|
A.[OperationNum] as 工序号
|
|
,I.id as Org
|
|
,A.ModifiedOn as MTime
|
|
,A.ID as ErpDetailID
|
|
,e3.Name AlternateTypeName
|
|
,u1.Name as SBItemUom
|
|
INTO #TempBOM
|
|
from {1}.dbo.CBO_BOMComponent as A
|
|
left join {1}.dbo.[CBO_BOMMaster] as A1 on (A.[BOMMaster] = A1.[ID])
|
|
left join {1}.dbo.[CBO_ItemMaster] as A2 on (A1.[ItemMaster] = A2.[ID])
|
|
left join {1}.dbo.[CBO_ItemMaster_Trl] as A4 on (A4.SysMlFlag = 'zh-CN') and (A2.[ID] = A4.[ID])
|
|
left join {1}.dbo.[CBO_ItemMaster] as A3 on (A.[ItemMaster] = A3.[ID])
|
|
left join {1}.dbo.[CBO_ItemMaster_Trl] as A5 on (A5.SysMlFlag = 'zh-CN') and (A3.[ID] = A5.[ID])
|
|
left join {1}.dbo.[CBO_Project] as A6 on (A.[CompProject] = A6.[ID])
|
|
LEFT JOIN {1}.dbo.[Base_Organization] AS I ON ( A1.[Org] = I.[ID] )
|
|
LEFT JOIN {1}.dbo.[Base_Organization_Trl] AS J ON ( I.[ID] = J.[ID] AND J.SysMLFlag='zh-CN')
|
|
|
|
left join {1}.dbo.UBF_Sys_ExtEnumType e1 on e1.Code = 'UFIDA.U9.CBO.MFG.Enums.AlternateTypesEnum'
|
|
left join {1}.dbo.UBF_Sys_ExtEnumValue e2 on e1.ID=e2.ExtEnumType and e2.evalue=A1.AlternateType
|
|
left join {1}.dbo.UBF_Sys_ExtEnumValue_Trl e3 on e2.id=e3.ID and e3.SysMLFlag='zh-CN'
|
|
left join {1}.dbo.Base_UOM_Trl u1 on a.IssueUOM=u1.id and u1.SysMLFlag='zh-CN'
|
|
where 1=1 and IsEffective=1 and A.ModifiedOn>=@LastTime AND I.id={0} and A.ComponentType=0
|
|
and A1.AlternateType=0
|
|
and A1.bomtype=0
|
|
|
|
IF NOT EXISTS(SELECT * FROM #TempBOM)
|
|
RETURN";
|
|
|
|
sql = string.Format(sql, ErpId, erpName);
|
|
sql = ICSHelper.Time(Namespace, Class, TenantId, sql, "#TempBOM");
|
|
sql += "\r\n";
|
|
sql += @"--删除数据
|
|
-- DELETE ICSSBOM WHERE moOpComponentId NOT IN (SELECT OpComponentId FROM {1}.dbo.bom_opcomponent)
|
|
SELECT a.ErpId INTO #tableICSSBOM
|
|
FROM ICSSBOM a With(NoLock)
|
|
LEFT JOIN {1}.dbo.[CBO_BOMComponent] b With(NoLock) ON a.ErpId=b.Id
|
|
LEFT JOIN {1}.dbo.CBO_BOMMaster c With(NoLock) ON b.BOMMaster=c.Id
|
|
WHERE b.id is null
|
|
and a.TenantId='{0}'
|
|
--AND c.Org={2}
|
|
|
|
DELETE FROM ICSSBOM
|
|
WHERE TenantId='{0}' and ErpId IN ( SELECT ErpId from #tableICSSBOM)
|
|
";
|
|
Dictionary<string, string> values = new Dictionary<string, string>();
|
|
values.Add("SBOMVER", "a.母料版本号");
|
|
values.Add("ITEMCODE", "a.料品编码");
|
|
values.Add("SBITEMCODE", "a.子阶料编码");
|
|
values.Add("SBItemName", "a.子阶料名称");
|
|
//values.Add("SBItemDesc", "a.子阶料描述");
|
|
values.Add("SBSITEMCODE", "a.子阶料编码");
|
|
values.Add("SBITEMQTY", "a.子阶料计量数量");
|
|
values.Add("SBUsageQty", "a.UsageQty");
|
|
values.Add("ParentQty", "a.ParentQty");
|
|
values.Add("SBItemUom", "a.SBItemUom");
|
|
values.Add("SEQ", "1");
|
|
values.Add("SBItemECN", "a.工程变更号");
|
|
values.Add("SBItemStatus", "'Y'");
|
|
values.Add("SBItemEfftime", "a.生效日期");
|
|
values.Add("SBItemInvtime", "a.失效日期");
|
|
values.Add("SBItemProject", "a.项目号");
|
|
values.Add("SBItemSeq", "a.次序");
|
|
values.Add("Location", "a.工序号");
|
|
values.Add("LastModificationTime", "a.Mtime");//操作时间
|
|
values.Add("LastModifierUserId", "'" + ConstWorkPoint.Muser + "'");//操作人
|
|
values.Add("LastModifierUserName", "'" + ConstWorkPoint.Musername + "'");//操作人名称
|
|
values.Add("SBItemContype", "c.ItemContype");
|
|
values.Add("Alternate", "a.AlternateTypeName");
|
|
values.Add("FixedScrap", "a.固定损耗");
|
|
values.Add("Scrap", "a.变动损耗");
|
|
values.Add("ScrapType", "a.损耗类型");
|
|
//更新存在数据
|
|
sql += ICSHelper.UpdateSQL("b", values)
|
|
+ @" #TempBOM a
|
|
INNER JOIN ICSSBOM b ON a.ErpDetailID=b.ErpId
|
|
left join IcsInventory c on b.SBItemCode=c.ItemCode and b.TenantId=c.TenantId
|
|
left join IcsMainCategoryCode d on c.ItemMainCategoryCode=d.ItemMainCategoryCode and c.TenantId=d.TenantId
|
|
WHERE b.TenantId='{0}' and a.Org={2} ";
|
|
|
|
values.Add("ErpId", "convert(nvarchar(100), a.ErpDetailID)");
|
|
values.Add("CreationTime", "a.MTime");//操作人
|
|
values.Add("CreatorUserId", "'" + ConstWorkPoint.Muser + "'");//操作人
|
|
values.Add("CreatorUserName", "'" + ConstWorkPoint.Musername + "'");//操作人名称
|
|
values.Add("TenantId", "'" + TenantId + "'");//站点
|
|
sql += "\r\n";
|
|
//插入新增数据
|
|
sql += ICSHelper.InsertSQL("ICSSBOM", values)
|
|
+ @" #TempBOM a
|
|
LEFT JOIN ICSSBOM b ON a.ErpDetailID=b.ErpId and b.TenantId='{0}'
|
|
left join IcsInventory c on a.子阶料编码=c.ItemCode and c.TenantId='{0}'
|
|
left join IcsMainCategoryCode d on c.ItemMainCategoryCode=d.ItemMainCategoryCode and d.TenantId='{0}'
|
|
WHERE 1=1 and b.id is null
|
|
and a.Org={2} ";
|
|
sql += " DROP TABLE #TempBOM " +
|
|
"DROP TABLE #tableICSSBOM";
|
|
sql = string.Format(sql, TenantId, erpName, ErpId);
|
|
//return;
|
|
//log.Info(sql);
|
|
ICSHelper.ExecuteDate(conStr, sql);
|
|
#endregion
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.ToString());
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|