From 7b8b8a5103a9bcd4cb462cb50a7830e78b67330d Mon Sep 17 00:00:00 2001 From: xuli Date: Tue, 30 Jul 2024 18:04:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0U8=E6=9D=A5=E6=BA=90=E7=9A=84?= =?UTF-8?q?=E6=96=99=E5=93=81=EF=BC=8C=E6=96=99=E5=93=81=E4=B8=BB=E5=88=86?= =?UTF-8?q?=E7=B1=BB=EF=BC=8C=E4=BA=A7=E5=93=81BOM=E7=9A=84=E5=90=8C?= =?UTF-8?q?=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/ICSSoft.FromERP/v14/.suo | Bin 193024 -> 246272 bytes ICSSoft.FromERP/ICSInventoryFromU8.cs | 159 +++++++++++++++++++ ICSSoft.FromERP/ICSSoft.FromERP.csproj | 3 + ICSSoft.FromERP/IcsMainCategoryCodeFromU8.cs | 128 +++++++++++++++ ICSSoft.FromERP/IcsSBomFromU8.cs | 157 ++++++++++++++++++ 5 files changed, 447 insertions(+) create mode 100644 ICSSoft.FromERP/ICSInventoryFromU8.cs create mode 100644 ICSSoft.FromERP/IcsMainCategoryCodeFromU8.cs create mode 100644 ICSSoft.FromERP/IcsSBomFromU8.cs diff --git a/.vs/ICSSoft.FromERP/v14/.suo b/.vs/ICSSoft.FromERP/v14/.suo index b4e861a2f4164161bc55925b0b33186f64703aff..630ee8a26b9d83862bc2067f61fb8e03d795e4c0 100644 GIT binary patch literal 246272 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%0DB4Wr!YQ29I^ToFcTxBS$NPR-EW%IZ}!> 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 delta 15077 zcmeHO4P2B}x}S5-4B~(Y2sk3*2qOXl0Rp0;4xb@@fs$)Q3d*1s0s@+%>CozCW{UF~ zkE`Yf+p4>@t~svb?Y1_Wm78X0wr%Q~TiM6%@7J$xbvOFr{?9uzfM13Fw(i~E?Zs!_ z^PY3wbDr}&&w0*s{_oMcvbXhJpQelfTQnMt7wFse_IBJfT96+o0d%)gr0ZiZ^xep8 zywdN|>(kEc-u?zVf)eX9N`rR;SGe-ue3Ey6O~>fYA9enO9<$N+@lOX zxPn06C`rD3SNszxbl2Y7eV>iH3B=vcNw|*(8SrK}?h&BJK>hG+#Qg#&78D8!1DQbs zK&hZXpb$_L=uS`(NcNS7`%sWUqfxeKd-jrfl4pO=U^z~kpH?e{pq$hi=JrQV-^eQN zYYb{-fvQ27piQ7`P!4E0s2+4L$W!0foxUIKc=E<|DQ|YCl?gh-d>=fF1$jCgurz`X{v9#jP~y30LGgej+W_xs9mN|Kko*vriH z??LwOgFfI&g6}M;?tNKz->kYN_JF|PELgq`x5_$m@Vj-{n(!~SW6(sKU-+NAsBWM1d?(K!M(3Lt(1lu zTvKLQXq;+Oah{R`p+^5SJPZe=gGPXqcSEC>0RsZ0`Vd_N z>X+M>7?v_-R6g%F^@rdgSgJf2_TW*yy!TLoL&grC1V(0pWX^}~y9M{HpvOVmKzivk zHq;oEr$WM5xbmlvr9B&w{SGKoSuoYYa3^>oANKPmT0b6145LL@_6NW?rw~dI=+9QfDvi;`I^j_&0`^FOG%Yp`$t1KKp zNw6T7+h#fT&&T)H2Hd)Edfkk0=0jZf8?G-EjizOaUWak%8Rh2l>CB57PqRL~!MaA0 z@BN1t9RB<`naA-)zjf|RSumr5J{cl{z3Mczm`b!^JddR<r-{*NL!Q*>j$!LHe*%9Xy72Y0w2Dsa2L-j8RNK4^zh6bI{9%_q7_OAvjujA~?)G#<+?J1a)c{=<+^F z+qi|>~8>K^1p6`>SQ_!%t(pL5ri&s9MwSo;*7S4Xe zR+23Xz3#&sd~t*;AJd zQ9ehe<|Smv*wW4C9IICgp8jD_z6^-9n;N#mRU?#C!%nq|P6nI?rOmPwEi9~9!J^Pk zyH_kMD8yj@a-kQuHGQTtVle(nTmDeRwBbU_B6#wp{)+#$a@}2cd!4dm+fr7be7MjI0tta>0^r zXBbHBp!LvnH8QZreR@`F+jT&@7jjSz?Xr5mibMdUpqO_%ZGl+Q8d{l;WK2pEm(so> zl1!T!Oz7ZIrmPz3j}6E^wxPys`@*S{QT|kV;RGMS6720?Fh&u#i?rq;BFJ9w>_Mim zwtA)h%ag%lcF4Bi2fvleqr4yo`s5TJ=%1je(^Mihmcl8)pR)3+3@XiF8Csbml{D}Q zB^}l7w;p5OQe0y|E@e+dYM;GrLk~{LDZ*?wzwGR(b+;BRjI!E(mg(K450i50i)6+8 zRf;|lB9lTxrS>8o6KDZ5^)8(s+<% zQ$ueS(mX(3LuRgJ+5wUq=3s%rw7@dWI;Dz+M8Z( zV(C|mGl&|RS$daoxTWDsA5G*5U6`aUb=+f3xq{_UY?fyLMf=!zx6FGdVp>eqEP*A| z!$RiU+rMF2+W#sGq|L9gVrmIu6QGyt$+koA5K({f3-&0jukzO4`%#D$vE&A-w(@n& zrGK6ObYN3mEwQRA?#<&(I+ zqCTObwtBv$wuX}S@t~lZ>V(;K%a$$8Ov@ggl9HJopO~An>pWw-d>L=Pz^pngy3)|9 zPhrZl&huolJ}iRB>#yuf#kw^@c|r+ujPYkj8BJLxrYI9enF1`D#p?VkSKW>oFCR%0 zV`=dlEI};CQ(3dHG&k|Vj>flGJJxp15PGYP4N?-go~E2*fez>2n3YlaIkuHb-(jX* z2F4G*E3;<2!~B#u?k%&mwCxS%tu~0}`;+rBgl`RFCWk4EUFgyL9&=Jls3@RI7g-va z-)Cl>bR90Cp&OIKi9BXY_NHg`u!5#@kmJg~vB2Ht?VQuWbF4siljd;l(yev#dFvn`u^zfT>+(QDnv#>CAiJ%9+otN3$F37RkwI$N_*Ix%$6+o&%uUu$<*?h}b2fd-qIab+erqebXOX_C z6A>FlUx~UKF63mpgGW)+Z}?`1vsjML`6RbGtS@tD-~1GRcA^Z$ zmTJ;9DOmZE@SCE^LnZf8um5RL1 zJ<0^0ry=X(!s_!6L=SQj>NPLYhGYDW(29{I@9kXs;o~hOmsdS?dHtc1%a5*muhCXl zJ71kYl)8`m_pGy2m0RYQ&8wuR_wu3a`R>2!HP=#EW2sf&qr3jVtJsn5y}ZiK$Ff88 ziIY$MJ{|+=sxj;9Ep_!JHMP}qYRl%k*zDfhG~ocxVBMESKf3KD$iUgXVMy_bS=BC% zC}BUJ_I;yKCGJyJS7({OsCwb-xpl6=yw)vIRCJ00J})bIcw&0u@a*`U^z5|wlo7dE z@#(o)x%f%XNli;j8#X*M>49ZssVQaU>BCauMO9WPXGL)7;*J;4|h5BKF;%K=`pVN zjdRLvyWFYe+=TJ@>N9I<5@uIdRm__+iN5%w7)GrJcn{^3SRcLd?#t_c`@!%3^Pb!* z3n={jr~6i-PN`8?kUFGH{a@t0v>5Z% zc^zu?Rc_(uUmAHe!gHLUv-(_?)FaZ{A54ZE6{fqxYR7Sm#!<+nSq4dhTeoOuAZ?0z0vVh z`2Sq#|H0JMPNrymi_iskDeJI@u4lv0aG7*1EvvTv2@{+Sh#3zkN92TFFnGLTsEGs8IF+C+UIV&#{9&OkI z%O>T`tFk2g%rdK_BL&8>Hr%_cbGgI3uCkPUJ2%WeQkARB{qvC zvyt1U-ZHP=GQYCAzOzJi%Kv8>^Oc{~JR5q-e2MqF<@IXhjbP8_Z+Y}}QO;fE*s$$! zu#>!YXI@nvZXjv^KHHteNRY77CBkh~mzm%4< z45}F}q8+|{MJ2aA3Fd9=qS(E-pV02w%sBbI4p4mWGi;XQ>j7d}kADG_Au$UNl;P!q zGStmb^bZ7Fd>!OtGP+=hJoj#eE}i5CW!=|)K3@b4*dbAf@mH4wCukO8Z)pJrQ8ceQ zT#q`Ls3W)W-2f((v~OZ}?Sc3f4;Fh^13hhoA|&AU1G#1Cs1%l~q)(A2^ z#(?1jdpUB>vS-=umZgFZuF{kPW2prcG8=M`xPY8vt`^aryVWAWh6x~xbUIoLpu2nk zVpR6V&r!~z1YV#SJ49bv+!I+=AMBM%&?D_nW1$r7jl2&6F-N=wi>2^BER2$6YOgno zlYmT+qvZkdg%5r98aFDXrYU4i6$VGsKGDP+O-*1TDY?C;ndD%Q~^M~h8dV2Uj= z{W>7dYHv^9`FfadJeJ9$=wNq7!S+@o?HV6^Ka(;BbAw=WeCe6f4zfbR6F( z(gbUw%mlGOPIf<=)#xyO%`P!I+J_Z<4>BaNBonPpWFdp6Vm~t;f-b?Hrvau{3)3rs z@F!t!Q>-yUjVPz{iEPDHFiSxxOB9pbrYR976Mei6T6V@@ARSQ0&EOy^p4An03KO|q z+7BY{aV)tDf^&;7(=|L7Ue(Q^^(^BCBX9vuw<5mTbRn0gT_r;ms=AIbyuAsC!Zm+fIVdDQI_SwZs zrfG8lyHny&RxWcp+*qgOKBT;IW;%UleclltIUuO z1bFG~SiP3#aa#9hmTXW#M^|I`?G9#n@H|_|gc*(paNvmMi&&vrvki*zuYnGLl?_Zg zMN_DuMQ_0SdC)t6kmb9rZ(-S;brg`?qH`?4g*^hKef)iVSoQ#Nc^xpL3x@=*h>uQ} zVflqI!bD$QWF;!XNCS&`XeW~BLKr2KXm$Wp)N&bdQsduPAF2Ve=xH=wLX1v)fQk`Q zIuJtd<|jB1!S~o=I+V{>(`tzldiV)f!oP}8Q9u>{lTctLzD%^SzA6gXS8g#q+f0v6 zWY_d5i}_)WK#+4PcV2NGz{xrhJf|DMvp&U-XWlAmH~m!^qF}Gqd9pwr9&m-&ZuqWG zC6p{#GL=g6ZU5w?g- zy0{ZZ0xFyW5NwOsEO+|9rPi&&hjh=0MLr>JK(XgffT9O7{kH%VBK`apEmC%J1-+O8%e0a#xT01F`W>ar`r*^q0%S@53Y`f%dy zflqhUaIV{ff{p4{zxfpeD%z8L4O>G+ZR|EBF*QTQ`jqJB1Lc`Q7h+LL!k5DK;6%!f z_ELK06yHS05)fQmI?ZdSunmaE({HgsH1<5paab1dE%@ke5+kYRG@nFapJFF}>J^?Z z0lZkYi5mL@L-K%z1klinavl>ZhG**dSnpWWz}E=n>66j4?=fLw)$%mt1_>^j5Zt!0 zL?v-y6~fjYbRh8$_i%LeoQ|c@U#+mI&4Y z6-sP=lWW-%E^feR0W;Fhr$sgGeS`Z;P;s@xbdHBGX6vYuOgokdFEXCPi?y`jU4AF| zrHN1+(ir$Q|2gds5H%F^4qrztZ}VC=NJ&-i@{QOLqV`nDM{@{TSlP-eXzpd6NXKGD ztwhi;l7+P0Anu`>%|c5bhYD|2NbF4>*$HjxsxSbX3xWf~E^c(vSUYh!BO5K7nNP(- zMJ-i@BKF&Vp65_&KM}`T={b{lQt?mrmzHS|D#@k_Rx0yfJ-J(Pd(W zPJC%)xM+4AFtv^q#k4pa)&SucX!BX#tb(c#?~aZ)9oB*3MMkqC#h=ORO<+;2M!YpC zQUqbsAiHvpIG2u$7S(QE#?X;iDAH^cg|e7h2SHGWO`?^8QlUcEfmeU2?MP+Es7iDw zkM?zr+=WQK8zX91g$fVTDR~?i5amj$jTRrc`+S0mhKfg}+?%L477BC0$4l8Pv^ZZK zg396cQ~nT89u>uj2dE-jOqb#?up-I8V`NScD=`-Lj7g(sZ-b!0>_NbyA?z1)`ZjSN zFUOYZWv;&H*64aU#z?wU!|z3J@-=*V*Mg0!L_wzi{BOzYvoplmr2 zLjI$mBMAb#=7A#h`7m4Ql1oiZF&!Q)ydVyjoNC8V*l4h_ykkQ7DKXV@W}49baydn^ z<=|5&JVW@xAxV&*Do2Tt0G^?gGD_Hp*_P#+7Dfxu%}Zm!fX8`Ekt2pj7%-CM{H+Ki(lnd!PC)i>Af~@uW*h zABExop|t^%9kwXFtTYLELbOU^^XdUZBk))p@LoumPrhuJYCMW@MJdHTApD^bm4}bh zrc1Y^r?pGPTGu3%&d@b`txGXek1ZGHTxP!G3&`y7a)?3|=uA>YkxB85@QEJ#Dg3U( zS6Ds zU)C}|0gy^;+ZNgk2_$kzlAnI(htfZHECD=;TVw<$U^`l5lr1`P*P4fclrq25Z$(98kn2 zX}KHSD~am!#yqB~1{l2hk;RC9u<8w_#D{T$ttvH$CT$V>XVApmP6XeGnII7cd3@r=%*Ed5E8#W&@!*F4If6E|;TWMcO=Rc>p)1$Q_`{6{U`xq| zJOAVTEqhC7rc(^;1UFb7J>CNE+yQhr0CX(n;a42BVRx#7D^f{sH^1_evzcn1~+eIT&PXPu{?#p}>S)DG12GZ#!F`S0C Wh;a_{R;)ibH2TLDcty{Fmj3~&p9Hf2 diff --git a/ICSSoft.FromERP/ICSInventoryFromU8.cs b/ICSSoft.FromERP/ICSInventoryFromU8.cs new file mode 100644 index 0000000..cbcdc2a --- /dev/null +++ b/ICSSoft.FromERP/ICSInventoryFromU8.cs @@ -0,0 +1,159 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Quartz; + +using System.Data; + +namespace ICSSoft.FromERP +{ + /// + /// 物料档案(凯尔克) + /// + public class ICSInventoryFromU8 : 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 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 NEWID() AS ID, + a.cInvCode AS ItemCode, + CASE WHEN A.bSelf ='1' THEN '1' WHEN A.bPurchase='1' THEN '1' when a.bProxyForeign='1' THEN '2' + else '' end ItemFormAttribute, + dbo.GetReplaceStr(cInvName) AS ItemName, + a.cEngineerFigNo ItemDrawingNo, + '' ItemDesc, + dbo.GetReplaceStr(isnull(cInvAddCode,'')+'|'+isnull(cInvStd,'')) AS ItemStd, + + c.cComUnitName AS ItemUnit, + a.cInvCCode ItemMainCategoryCode, + b.cInvCName ClassName, + ISNULL(c.iChangRate,0) as ItemRate, + ISNULL(a.iMassDate,'') as EffectiveDays, + ISNULL(CONVERT(NVARCHAR(50),a.dModifyDate,21),'') MTime, + (case when isnull(a.fOutExcess,0)=0 then 0 else (case when isnull(a.fOutExcess,0)>5 then 3 else 2 end) end) 备料超额类型, + isnull(a.fOutExcess,0) 备料超额值 + + INTO #TempINV + FROM {1}.dbo.Inventory a with(nolock) + LEFT JOIN {1}.dbo.InventoryClass b with(nolock) ON a.cInvCCode = b.cInvCCode + LEFT JOIN {1}.dbo.ComputationUnit c with(nolock) 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 = string.Format(sql, ErpId, erpName); + sql = ICSHelper.Time(Namespace, Class, TenantId, sql, "#TempINV"); + + sql += @"--删除数据 + + SELECT a.ItemCode INTO #tableICSINVENTORY + FROM ICSINVENTORY a With(NoLock) + LEFT JOIN {1}.dbo.[Inventory] b With(NoLock) ON a.ItemCode=b.cInvCode + WHERE b.cInvCode is null + and a.TenantId='{0}' + + + DELETE ICSINVENTORY + WHERE TenantId='{0}' and ItemCode IN ( SELECT ItemCode from #tableICSINVENTORY) "; + Dictionary values = new Dictionary(); + values.Add("ItemCode", "a.ItemCode");//物料编号 + values.Add("ItemName", "a.ItemName");//物料名称 + values.Add("ItemDesc", "a.ItemDesc");//物料描述 + values.Add("ItemStd", "a.ItemStd");//规格型号 + values.Add("ItemAttribute", "a.ItemFormAttribute");//产品属性(0:采购,1:自制,2:委外,3虚拟) + values.Add("ItemAddCode", "a.INVPARSETYPE"); //产品代码(U8存货代码 ) + values.Add("ItemUnit", "a.ItemUnit");//主计量单位 + values.Add("ItemMainCategoryCode", "a.ItemMainCategoryCode");//大类编码 + values.Add("ItemRate", "a.ItemRate"); + values.Add("InvVersion", "''"); + values.Add("InvBrand", "''"); + values.Add("InvIQC", "0");//是否IQC检验 + values.Add("InvFQC", "0");//是否FQC检验 + values.Add("EffectiveEnable", "0");// + values.Add("EffectiveDays", "a.EffectiveDays");// + values.Add("BatchEnable", "1");// + values.Add("LotEnable", "0");// + values.Add("PrintEnable", "0");// + values.Add("OverType", "a.备料超额类型");//超领类型(1:比例,2:数量,3:不管控) + values.Add("OverValue", "a.备料超额值"); + values.Add("LastModificationTime", "a.Mtime");//操作时间 + values.Add("ItemType", "d.ItemType");//操作时间 + values.Add("ItemContype", "d.ItemContype");//操作时间 + values.Add("ItemControlType", "d.ItemControlType");//操作时间 + values.Add("ItemDrawingNo", "b.ItemDrawingNo");//产品图号 + + + //更新存在数据 + sql += ICSHelper.UpdateSQL("b", values) + + @" #TempINV a + INNER JOIN ICSINVENTORY b ON a.ItemCode=b.ItemCode + left join IcsMainCategoryCode d on b.ItemMainCategoryCode=d.ItemMainCategoryCode and b.TenantId=d.TenantId + WHERE b.TenantId='" + TenantId + "' "; + + values.Add("CreationTime", "a.MTime");//操作人 + values.Add("CreatorUserId", "'" + ConstWorkPoint.Muser + "'");//操作人 + values.Add("CreatorUserName", "'" + ConstWorkPoint.Musername + "'");//操作人名称 + values.Add("TenantId", "'" + TenantId + "'");//站点 + //插入新增数据 + sql += ICSHelper.InsertSQL("ICSINVENTORY", values) + + @" #TempINV a + LEFT JOIN ICSINVENTORY b ON a.ItemCode=b.ItemCode and b.TenantId='{0}' + left join IcsMainCategoryCode d on b.ItemMainCategoryCode=d.ItemMainCategoryCode and b.TenantId=d.TenantId + WHERE 1=1 and b.ItemCode is null + "; + sql += " DROP TABLE #TempINV " + + " DROP TABLE #tableICSINVENTORY "; + sql = string.Format(sql, TenantId, erpName, ErpId); + + ICSHelper.ExecuteDate(conStr, sql); + #endregion + } + } + catch (Exception ex) + { + log.Error(ex.ToString()); + } + } + } +} diff --git a/ICSSoft.FromERP/ICSSoft.FromERP.csproj b/ICSSoft.FromERP/ICSSoft.FromERP.csproj index fa28fc5..0cff27d 100644 --- a/ICSSoft.FromERP/ICSSoft.FromERP.csproj +++ b/ICSSoft.FromERP/ICSSoft.FromERP.csproj @@ -114,9 +114,12 @@ + + + diff --git a/ICSSoft.FromERP/IcsMainCategoryCodeFromU8.cs b/ICSSoft.FromERP/IcsMainCategoryCodeFromU8.cs new file mode 100644 index 0000000..90c970f --- /dev/null +++ b/ICSSoft.FromERP/IcsMainCategoryCodeFromU8.cs @@ -0,0 +1,128 @@ +using Quartz; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; + +namespace ICSSoft.FromERP +{ + /// + /// 物料主分类(凯尔克) + /// + public class IcsMainCategoryCodeFromU8 : 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 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 a.cInvCCode as ItemMainCategoryCode + ,b.cInvCCode as ItemMainCategoryName + ,'' as ItemMainCategoryDesc + ,getdate() MTime + ,p.parentCode + INTO #TempItemCategory + from {1}.dbo.[InventoryClass] a with(nolock) + left join + ( + select cc.cInvCCode,cc_p.cInvCCode parentCode + from {1}.dbo.InventoryClass cc with(nolock) + left join {1}.dbo.InventoryClass cc_p with(nolock) on cc.cInvCCode like cc_p.cInvCCode+'%' + and cc.iInvCGrade=cc_p.iInvCGrade+1 + ) p ON a.cInvCCode=p.cInvCCode + where 1=1 + and A.ModifiedOn>=@LastTime + ORDER BY A.cInvCCode + + IF NOT EXISTS(SELECT * FROM #TempItemCategory) + RETURN"; + sql = string.Format(sql, ErpId, erpName); + sql = ICSHelper.Time(Namespace, Class, TenantId, sql, "#TempItemCategory"); + + + sql += @"--删除数据 + + SELECT a.ItemMainCategoryCode INTO #tableItemCategory + FROM IcsMainCategoryCode a With(NoLock) + LEFT JOIN {1}.dbo.[InventoryClass] b With(NoLock) ON a.ItemMainCategoryCode=b.cInvCCode + WHERE b.cInvCCode is null + and a.TenantId='{0}' + + DELETE IcsMainCategoryCode + WHERE TenantId='{0}' and ItemMainCategoryCode IN ( SELECT ItemMainCategoryCode from #tableItemCategory) "; + Dictionary values = new Dictionary(); + values.Add("ItemMainCategoryCode", "a.ItemMainCategoryCode");//物料编号 + values.Add("ItemMainCategoryName", "a.ItemMainCategoryNAME");//物料名称 + values.Add("ItemMainCategoryDesc", "a.ItemMainCategoryDesc");//物料描述 + values.Add("LastModificationTime", "a.MTime");//操作时间 + values.Add("PCode", "a.parentCode");//操作人 + + //更新存在数据 + sql += ICSHelper.UpdateSQL("b", values) + + @" #TempItemCategory a + INNER JOIN IcsMainCategoryCode b ON a.ItemMainCategoryCode=b.ItemMainCategoryCode + WHERE b.TenantId='" + TenantId + "' "; + + + + values.Add("CreationTime", "a.MTime");//操作人 + values.Add("CreatorUserId", "'" + ConstWorkPoint.Muser + "'");//操作人 + values.Add("CreatorUserName", "'" + ConstWorkPoint.Musername + "'");//操作人名称 + values.Add("TenantId", "'" + TenantId + "'");//站点 + //插入新增数据 + sql += ICSHelper.InsertSQL("IcsMainCategoryCode", values) + + @" #TempItemCategory a + LEFT JOIN IcsMainCategoryCode b ON a.ItemMainCategoryCode=b.ItemMainCategoryCode and b.TenantId='{0}' + WHERE 1=1 and b.ItemMainCategoryCode is null + + "; + sql += " DROP TABLE #TempItemCategory " + + " DROP TABLE #tableItemCategory "; + sql = string.Format(sql, TenantId, erpName,ErpId); + // return; + ICSHelper.ExecuteDate(conStr, sql); + #endregion + } + } + catch (Exception ex) + { + log.Error(ex.ToString()); + } + } + } +} diff --git a/ICSSoft.FromERP/IcsSBomFromU8.cs b/ICSSoft.FromERP/IcsSBomFromU8.cs new file mode 100644 index 0000000..8628358 --- /dev/null +++ b/ICSSoft.FromERP/IcsSBomFromU8.cs @@ -0,0 +1,157 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using Quartz; + +namespace ICSSoft.FromERP +{ + /// + /// 产品Bom(凯尔克) + /// + public class IcsSBomFromU8 : 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 + c.InvCode as 料品编码, + f.InvCode as 子阶料编码, + g2.cInvName as 子阶料名称, + '' 子阶料描述, + '' 项目号, + '' 工程变更号, + d.BaseQtyD 子阶料计量数量, + '' 子阶料物料版本, + d.EffBegDate 生效日期, + d.EffEndDate 失效日期, + d.SortSeq 次序, + d.OpSeq 工序号, + a.Version 母料版本号 , + ISNULL(a.ModifyDate, a.CreateDate) as MTime + ,d.OpComponentId as ErpDetailID + into #TempBOM + FROM {1}.dbo.bom_bom a With(NoLock) -- BOM资料 + INNER JOIN {1}.dbo.bom_parent b With(NoLock) on a.BomId = b.BomId --BOM母件资料 + INNER JOIN {1}.dbo.bas_part c With(NoLock) on b.ParentId = c.PartId --物料表 + INNER JOIN {1}.dbo.bom_opcomponent d With(NoLock) on a.BomId=d.BomId --BOM子件资料 + INNER JOIN {1}.dbo.bas_part f With(NoLock) on d.ComponentId = f.PartId + left join {1}.dbo.inventory g With(NoLock) on c.InvCode=g.cInvCode --存货档案 + left join {1}.dbo.inventory g2 With(NoLock) on f.InvCode=g2.cInvCode --存货档案 + + WHERE ISNULL(a.ModifyDate, a.CreateDate)>=@LastTime + + 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 += @"--删除数据 + + + + SELECT a.ErpId INTO #tableICSSBOM + FROM ICSSBOM a With(NoLock) + left join {1}.dbo.bom_opcomponent d With(NoLock) on a.ErpId=d.OpComponentId + WHERE d.id is null + and a.TenantId='{0}' + + + DELETE ICSSBOM + WHERE TenantId='{0}' and ErpId IN ( SELECT ErpId from #tableICSSBOM) +"; + Dictionary values = new Dictionary(); + values.Add("SBOMVER", "a.母料版本号"); + values.Add("ITEMCODE", "a.料品编码"); + values.Add("SBITEMCODE", "a.子阶料编码"); + values.Add("SBItemName", "a.子阶料名称"); + values.Add("SBSITEMCODE", "a.子阶料编码"); + values.Add("SBITEMQTY", "a.子阶料计量数量"); + 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"); + //更新存在数据 + 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}' "; + + 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 + "; + sql += " DROP TABLE #TempBOM " + + "DROP TABLE #tableICSSBOM"; + sql = string.Format(sql, TenantId, erpName, ErpId); + // return; + ICSHelper.ExecuteDate(conStr, sql); + #endregion + } + } + catch (Exception ex) + { + log.Error(ex.ToString()); + } + } + + + } +}