diff --git a/.vs/ICSSoft.FromERP/v16/.suo b/.vs/ICSSoft.FromERP/v16/.suo
index 0656a8c..936cdd9 100644
Binary files a/.vs/ICSSoft.FromERP/v16/.suo and b/.vs/ICSSoft.FromERP/v16/.suo differ
diff --git a/ICSSoft.FromERP/ICSMOBOM.cs b/ICSSoft.FromERP/ICSMOBOM.cs
index 9acecc1..3effdd0 100644
--- a/ICSSoft.FromERP/ICSMOBOM.cs
+++ b/ICSSoft.FromERP/ICSMOBOM.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Data;
using System.Linq;
using System.Text;
using Quartz;
@@ -8,9 +9,9 @@ using Quartz;
namespace ICSSoft.FromERP
{
///
- /// 备料表(工单BOM)
+ /// 工单备料表(锐腾)
///
- public class ICSMOBOM : IJob
+ public class ICSMoBom : IJob
{
private static object key = new object();
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
@@ -35,82 +36,100 @@ namespace ICSSoft.FromERP
{
try
{
-
string conStr = ICSHelper.GetConnectString();
string Namespace = this.GetType().Namespace;
- string Class = this.GetType().Name;
- #region SQL
- string sql = @"SELECT a.MoCode AS MOCODE ,
- b.InvCode AS ITEMCODE,
- b.SortSeq AS SEQ,
- c.InvCode AS MOBITEMCODE,
- CAST(c.AllocateId AS NVARCHAR(50)) AS MOBITEMECN,
- d.cInvName AS MOBITEMNAME,
- d.cInvStd AS MOBITEMDESC,
- '1' AS MOBITEMSTATUS,
+ //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();//mes 组织
+ 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 top 2000 A1.DocNo AS MOCODE ,
+ A5.Code AS ITEMCODE,
+ 1 AS SEQ,
+ A4.Code AS MOBITEMCODE,
+ CAST(A3.ID AS NVARCHAR(50)) AS MOBITEMECN,
+ A4.Name AS MOBITEMNAME,
+ A4.SPECS AS MOBITEMDESC,
+ A1.DocState AS MOBITEMSTATUS,
GETDATE() AS MOBITEMEFFTIME,
GETDATE() AS MOBITEMINVTIME,
- CASE WHEN d.bCutMantissa='1' AND d.bKCCutMantissa='1' THEN CEILING(c.Qty) ELSE c.Qty END AS MOBITEMQTY,
- c.WhCode AS MOBITEMLOCATION,
- CASE WHEN c.WIPType='1' THEN '1' ELSE '0' END AS MOBOMITEMUOM,
- '' AS MOFAC,
- c.SortSeq AS MOBOMLINE,
- CASE WHEN ISNULL(a.ModifyTime, a.CreateTime)>ISNULL(b.CloseTime,ISNULL(b.RelsTime,ISNULL(a.ModifyTime, a.CreateTime))) THEN ISNULL(a.ModifyTime, a.CreateTime) ELSE ISNULL(b.CloseTime,ISNULL(b.RelsTime,ISNULL(a.ModifyTime, a.CreateTime))) END as MTIME
- into #TempBOM
- FROM {0}.dbo.mom_order a
- INNER JOIN {0}.dbo.mom_orderdetail b ON a.MoId = b.MoId
- INNER JOIN {0}.dbo.mom_moallocate c ON b.MoDId = c.MoDId
- INNER JOIN {0}.dbo.Inventory d ON c.InvCode = d.cInvCode
- LEFT JOIN {0}.dbo.bom_parent e ON b.BomId = e.BomId
- LEFT JOIN {0}.dbo.bom_bom f ON e.BomId = f.BomId
- LEFT JOIN {0}.dbo.ComputationUnit unit ON d.cComUnitCode = unit.cComunitCode
- WHERE ISNULL (b.RelsUser,'') <> ''
- and CASE WHEN ISNULL(a.ModifyTime, a.CreateTime)>ISNULL(b.CloseTime,ISNULL(b.RelsTime,ISNULL(a.ModifyTime, a.CreateTime))) THEN ISNULL(a.ModifyTime, a.CreateTime) ELSE ISNULL(b.CloseTime,ISNULL(b.RelsTime,ISNULL(a.ModifyTime, a.CreateTime))) END>=@LastTime
+ A3.ActualReqQty AS MOBITEMQTY,
+ A3.IssueStyle AS MOBITEMLOCATION,
+ c.code AS MOFAC,
+ A6.Code AS MOBOMITEMUOM,
+ CAST(A3.DocLineNO AS NVARCHAR(50)) AS MOBOMLINE,
+ A12.Code as WorkPoint,
+ ISNULL(A3.ModifiedOn,A3.CreatedOn) AS MTIME
+ into #TempPick
+ FROM {0}.dbo.MO_MO A1
+ INNER JOIN {0}.dbo.MO_MOPickList A3 ON A3.MO=A1.ID
+ LEFT JOIN {0}.dbo.CBO_ItemMaster A4 ON A3.ItemMaster=A4.ID
+ LEFT JOIN {0}.dbo.CBO_ItemMaster A5 ON A1.ItemMaster=A5.ID
+ LEFT JOIN {0}.dbo.Base_UOM A6 ON A3.IssueUOM=A6.ID
+ LEFT JOIN {0}.dbo.[Base_Organization] as A12 on (A1.[Org] = A12.[ID])
+ LEFT JOIN {0}.dbo.CBO_Wh c on A3.SupplyWh=c.id and A1.org=c.org
+ WHERE A3.IsPhantomPart!=1
+ and ISNULL(A3.ModifiedOn,A3.CreatedOn)>=@LastTime
+ and a12.id='{1}' order by ISNULL(A3.ModifiedOn,A3.CreatedOn)
- IF NOT EXISTS(SELECT * FROM #TempBOM)
+ IF NOT EXISTS(SELECT * FROM #TempPick)
RETURN";
- sql = ICSHelper.Time(Namespace, Class, WorkPoint, sql, "#TempBOM");
- sql += "\r\n";
- sql += @"--删除数据
- DELETE ICSMOBOM WHERE MOBITEMECN NOT IN (SELECT AllocateId FROM {0}.dbo.mom_moallocate) ";
- Dictionary values = new Dictionary();
- values.Add("MOCODE", "a.MOCODE");
- values.Add("ITEMCODE", "a.ITEMCODE");
- values.Add("SEQ", "a.SEQ");
- values.Add("MOBITEMCODE", "a.MOBITEMCODE");
- values.Add("MOBITEMNAME", "a.MOBITEMNAME");
- values.Add("MOBITEMDESC", "a.MOBITEMDESC");
- values.Add("MOBITEMSTATUS", "a.MOBITEMSTATUS");
- values.Add("MOBITEMEFFTIME", "a.MOBITEMEFFTIME");
- values.Add("MOBITEMINVTIME", "a.MOBITEMEFFTIME");
- values.Add("MOBITEMQTY", "a.MOBITEMQTY");
- values.Add("MOBOMITEMUOM", "a.MOBOMITEMUOM");//供应类型:1:入库到冲
- values.Add("MOBOMLINE", "a.MOBOMLINE");
- values.Add("MOBITEMLOCATION", "a.MOBITEMLOCATION");
- values.Add("MTIME", "a.MTIME");
- values.Add("MOFAC", "a.MOFAC");
- //values.Add("WorkPoint", "a.WorkPoint");
- //更新存在数据
- sql += ICSHelper.UpdateSQL("b", values)
- + @" #TempBOM a
- INNER JOIN ICSMOBOM b ON a.MOBITEMECN=b.MOBITEMECN
+ sql = string.Format(sql, erpName, ErpId);
+ sql = ICSHelper.Time(Namespace, Class, TenantId, sql, "#TempPick");
+ Dictionary value = new Dictionary();
+
+
+ sql += "\r\n";
+ sql += @"--删除数据
+ DELETE ICSMOBOM WHERE Default1 NOT IN (SELECT ID FROM {0}.dbo.MO_MOPickList) AND ICSMOBOM.TenantId='{1}'";
+ Dictionary values = new Dictionary();
+ values.Add("MOCODE", "a.MOCODE");
+ values.Add("ITEMCODE", "a.ITEMCODE");
+ values.Add("MOBITEMCODE", "a.MOBITEMCODE");
+ values.Add("MOBITEMNAME", "a.MOBITEMNAME");
+ values.Add("MoBItemSpec", "a.MOBITEMDESC");
+ values.Add("MOBITEMSTATUS", "a.MOBITEMSTATUS");
+ values.Add("MOBITEMEFFTIME", "a.MOBITEMEFFTIME");
+ values.Add("MOBITEMINVTIME", "a.MOBITEMEFFTIME");
+ values.Add("MOBITEMQTY", "a.MOBITEMQTY");
+ values.Add("MOBOMITEMUOM", "a.MOBOMITEMUOM");
+ values.Add("MOBOMLINE", "a.MOBOMLINE");
+ values.Add("MOBITEMLOCATION", "a.MOBITEMLOCATION");
+ values.Add("LastModifierUserId", "'" + ConstWorkPoint.Muser + "'");
+ values.Add("LastModifierUserName", "'" + ConstWorkPoint.Musername + "'");
+ values.Add("LastModificationTime", "a.Mtime");//操作时间
+ values.Add("MOFAC", "a.MOFAC");
+ //更新存在数据
+ sql += ICSHelper.UpdateSQL("b", values)
+ + @" #TempPick a
+ INNER JOIN ICSMOBOM b ON a.MOBITEMECN=b.Default1 AND B.TenantId='{1}'
";
- values.Add("MOBITEMECN", "a.MOBITEMECN");
- values.Add("MUSER", "'" + ConstWorkPoint.Muser + "'");
- values.Add("MUSERName", "'" + ConstWorkPoint.Musername + "'");
- values.Add("WorkPoint", "'" + WorkPoint + "'");
- sql += "\r\n";
- //插入新增数据
- sql += ICSHelper.InsertSQL("ICSMOBOM", values)
- + @" #TempBOM a
- LEFT JOIN ICSMOBOM b ON a.MOBITEMECN=b.MOBITEMECN
- WHERE b.MOBITEMECN IS NULL
+ values.Add("Default1", "a.MOBITEMECN");
+ 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("ICSMOBOM", values)
+ + @" #TempPick a
+ LEFT JOIN ICSMOBOM b ON a.MOBITEMECN=b.Default1 AND B.TenantId='{1}'
+ WHERE b.Default1 IS NULL
";
- sql += "DROP TABLE #TempBOM";
- sql = string.Format(sql, WorkPoint);
- ICSHelper.ExecuteDate(conStr, sql);
- #endregion
+ sql += "DROP TABLE #TempPick";
+ sql = string.Format(sql, erpName, TenantId);
+ //return;
+ ICSHelper.ExecuteDate(conStr, sql);
+ #endregion
+ }
}
catch (Exception ex)
{
diff --git a/ICSSoft.FromERP/ICSSoft.FromERP.csproj b/ICSSoft.FromERP/ICSSoft.FromERP.csproj
index abe9feb..640371f 100644
--- a/ICSSoft.FromERP/ICSSoft.FromERP.csproj
+++ b/ICSSoft.FromERP/ICSSoft.FromERP.csproj
@@ -102,6 +102,7 @@
+