纽威
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.
 
 
 
 
 

144 lines
6.9 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Quartz;
using System.Data;
namespace ICSSoft.FromERP
{
/// <summary>
/// 物料
/// </summary>
public class ICSInventory : 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 conERPStr = ICSHelper.GetERPConnectString();
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 WorkPoint = dr["WorkPointCode"].ToString();
string Class = this.GetType().Name + WorkPoint;
erpName = string.Format(erpName, WorkPoint);
#region SQL
string sql = @"select NEWID() AS ID,
cInvCode AS INVCODE,
dbo.GetReplaceStr(cInvName) AS INVNAME,
dbo.GetReplaceStr(cInvStd) AS INVSTD,
c.cComUnitName AS InvUnit,
b.cInvCName as ClassCode,
a.cAssComUnitCode as AmountUnit,
a.cInvCCode AS INVCLASS,
b.cInvCName as ClassName,
ISNULL(c.iChangRate,0) as InvRate,
a.cDefWareHouse as INVMACHINETYPE,
ISNULL(a.iMassDate,'') as EffectiveDays,
a.bInvBatch as fInExcess,
fSupplyMulti as INVCARTONQTY,
ISNULL(CONVERT(NVARCHAR(50),a.dModifyDate,21),'') as MTIME,
'' AS INVDESC,
'' AS INVEXPORTIMPORT,
a.cInvAddCode as INVPARSETYPE,
a.cinvdefine5 as PODetailID
,'{0}' as WorkPoint
INTO #TempINV
FROM {1}.dbo.Inventory a
LEFT JOIN {1}.dbo.InventoryClass b ON a.cInvCCode = b.cInvCCode
LEFT JOIN {1}.dbo.ComputationUnit c ON a.cComUnitCode = c.cComunitCode
WHERE a.dEDate IS NULL AND a.dModifyDate>=@LastTime
ORDER BY cInvCode
IF NOT EXISTS(SELECT * FROM #TempINV)
RETURN";
sql = ICSHelper.Time(Namespace, Class, WorkPoint, sql, "#TempINV");
sql += @"--删除数据
-- DELETE ICSINVENTORY WHERE InvCode NOT IN (SELECT cInvCode FROM {1}.dbo.[Inventory])
SELECT a.INVCODE INTO #tableICSINVENTORY
FROM ICSINVENTORY a With(NoLock)
LEFT JOIN {1}.dbo.[Inventory] b With(NoLock) ON a.INVCODE=b.cInvCode
WHERE a.WorkPoint='{0}' and b.cInvCode IS NULL
DELETE ICSINVENTORY
WHERE WorkPoint='{0}' and INVCODE IN ( SELECT INVCODE from #tableICSINVENTORY)
";
Dictionary<string, string> values = new Dictionary<string, string>();
values.Add("INVCODE", "a.INVCODE");//物料编号
values.Add("InvName", "a.INVNAME");//物料名称
values.Add("INVDESC", "a.INVDESC");//物料描述
values.Add("InvStd", "a.INVSTD");//规格型号
values.Add("InvUnit", "a.InvUnit");//主计量单位
values.Add("ClassCode", "a.ClassCode");//大类编码
values.Add("ClassName", "a.ClassName");//大类编码
values.Add("InvRate", "a.InvRate");
values.Add("InvVersion", "''");
values.Add("InvBrand", "''");
values.Add("InvIQC", "0");//大类编码
values.Add("InvFQC", "0");//大类编码
values.Add("EffectiveEnable", "0");//大类名称
values.Add("EffectiveDays", "a.EffectiveDays");//大类名称
values.Add("BatchEnable", "0");//大类名称
values.Add("LotEnable", "0");//大类名称
values.Add("PrintEnable", "0");//大类名称
values.Add("MTIME", "a.MTIME");//操作时间
//更新存在数据
sql += ICSHelper.UpdateSQL("b", values)
+ @" #TempINV a
INNER JOIN ICSINVENTORY b ON a.INVCODE=b.INVCODE and a.WorkPoint=b.WorkPoint
WHERE a.WorkPoint='" + WorkPoint + "' ";
values.Add("ID", "a.ID");//唯一标识
values.Add("MUSER", "'" + ConstWorkPoint.Muser + "'");//操作人
values.Add("MUSERName", "'" + ConstWorkPoint.Musername + "'");//操作人名称
values.Add("WorkPoint", "'" + WorkPoint + "'");//站点
//插入新增数据
sql += ICSHelper.InsertSQL("ICSINVENTORY", values)
+ @" #TempINV a
LEFT JOIN ICSINVENTORY b ON a.INVCODE=b.INVCODE and a.WorkPoint=b.WorkPoint
WHERE b.INVCODE IS NULL and a.WorkPoint='" + WorkPoint + "' ";
sql += " DROP TABLE #TempINV " +
" DROP TABLE #tableICSINVENTORY ";
sql = string.Format(sql, WorkPoint, erpName);
ICSHelper.ExecuteDate(conStr, sql);
#endregion
}
}
catch (Exception ex)
{
log.Error(ex.ToString());
}
}
}
}