SAPDataLogicPartial.cs 105 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259
  1. 
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Net;
  8. using System.Reflection;
  9. using System.Text;
  10. using Dongke.IBOSS.PRD.Basics.BaseResources;
  11. using Dongke.IBOSS.PRD.Basics.DataAccess;
  12. using Dongke.IBOSS.PRD.Basics.Library;
  13. using Dongke.IBOSS.PRD.WCF.DataModels;
  14. using Newtonsoft.Json.Linq;
  15. using Oracle.ManagedDataAccess.Client;
  16. namespace Dongke.IBOSS.PRD.Service.SAPHegiiDataService
  17. {
  18. public partial class SAPDataLogic
  19. {
  20. #region 跨车间作业
  21. /// <summary>
  22. /// 同步SAP数据(自动)
  23. /// </summary>
  24. /// <param name="date"></param>
  25. public static void CrossWorkshopToSAP(DateTime date, DateTime ndate)
  26. {
  27. IDBTransaction oracleConn = null;
  28. ServiceResultEntity sre = new ServiceResultEntity();
  29. OracleParameter[] paras = null;
  30. int logid = 0;
  31. string message = string.Empty;
  32. string sqlString = string.Empty;
  33. try
  34. {
  35. #region 生成日志
  36. paras = new OracleParameter[]
  37. {
  38. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  39. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  40. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  41. };
  42. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  43. DataSet ds = oracleConn.ExecStoredProcedure("pro_sap_hegii_workdata_kcjzy", paras);
  44. int.TryParse(paras[1].Value + "", out logid);
  45. message = paras[2].Value + "";
  46. oracleConn.Commit();
  47. #endregion
  48. #region 同步SAP
  49. // 手动推
  50. //logid = 28;
  51. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  52. sqlString = @"
  53. SELECT TO_CHAR(B.EXECUTEDATEBEGIN, 'yyyymmddhh24miss') AS ZYWKS,
  54. TO_CHAR(B.EXECUTEDATEEND - 1 / 24 / 60 / 60, 'yyyymmddhh24miss') AS ZYWJS,
  55. TO_CHAR(SYSDATE, 'yyyymmddhh24miss') AS ZMONT,
  56. A.WORKCODE AS WERKS,
  57. A.SAPCODE AS MATNR,
  58. A.GOODSCODE AS GROES,
  59. A.WORKSHOP AS ZSCCJ,
  60. A.WORKSHOP AS ZSSCJ,
  61. A.DATACODE AS ZJDNU,
  62. A.ITEM AS ZZYLX,
  63. A.NUM AS MENGE,
  64. 'T' AS ZSCS,
  65. CASE WHEN A.TESTMOULDFLAG = 1 THEN 'Y' ELSE 'C' END AS ZSCMS,
  66. '' AS ZTYPE1,
  67. '' AS ZMSG1
  68. FROM TSAP_HEGII_WORKDATA_KCJZY A
  69. INNER JOIN TSAP_HEGII_DATALOG_KCJZY B
  70. ON B.LOGID = A.LOGID
  71. WHERE A.LOGID = :LOGID ";
  72. paras = new OracleParameter[]
  73. {
  74. new OracleParameter(":LOGID", OracleDbType.Int32, logid, ParameterDirection.Input),
  75. };
  76. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  77. sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  78. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  79. if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "1")
  80. {
  81. string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<CrossWorkShopToSAP>.ConvertToModel(workData)) + "}}";
  82. // 配置文件
  83. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  84. string url033 = ini.ReadIniData("SAP_NEW_INFO", "Url033");
  85. // 测试
  86. //string url033 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM033";
  87. // 正式
  88. //string url033 = "http://hgs4powd1.hegii.com:8000/RESTAdapter/DKMES/ZPPFM033";
  89. string result = PostData(url033, postString, "POST");
  90. string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  91. string msg = JObject.Parse(result)["ZMSG"].ToString();
  92. sqlString = "update TSAP_HEGII_DATALOG_KCJZY t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid";
  93. paras = new OracleParameter[]
  94. {
  95. new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  96. new OracleParameter(":DataStuts", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  97. new OracleParameter(":msg", OracleDbType.Varchar2, msg, ParameterDirection.Input),
  98. };
  99. oracleConn.ExecuteNonQuery(sqlString, paras);
  100. oracleConn.Commit();
  101. }
  102. #endregion
  103. }
  104. catch (Exception ex)
  105. {
  106. OutputLog.TraceLog(LogPriority.Error,
  107. "CrossWorkshopToSAP",
  108. "跨车间作业量" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  109. ex.ToString(),
  110. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  111. }
  112. }
  113. public static void CrossWorkshopToSAP_test(DateTime date, DateTime ndate)
  114. {
  115. IDBTransaction oracleConn = null;
  116. ServiceResultEntity sre = new ServiceResultEntity();
  117. int logid = 0;
  118. string message = string.Empty;
  119. string sqlString = string.Empty;
  120. try
  121. {
  122. #region 同步SAP
  123. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  124. //sqlString = "select workcode from tp_mst_account where rownum = 1";
  125. //string workcode = oracleConn.GetSqlResultToStr(sqlString);
  126. //workcode = "5000";
  127. sqlString = @"SELECT
  128. to_char(:v_datebegin, 'yyyymmddhh24miss') AS ZYWKS,
  129. to_char(:in_dateend, 'yyyymmddhh24miss') AS ZYWJS,
  130. to_char(SYSDATE,'yyyymmddhh24miss') AS ZMONT,
  131. '5000' AS WERKS,
  132. MATERIALCODE AS MATNR,
  133. GOODSCODE AS GROES,
  134. to_char(WORKSHOP) AS ZSCCJ,
  135. to_char(DATACODE) AS ZJDNU,
  136. to_char(ITEM) AS ZZYLX,
  137. to_char(count( * )) AS MENGE,
  138. 'T' AS ZSCS,
  139. CASE WHEN TESTMOULDFLAG = 1 THEN 'Y' ELSE 'C' END AS ZSCMS,
  140. '' AS ZTYPE1,
  141. '' AS ZMSG1
  142. FROM
  143. (--产量
  144. SELECT
  145. GDD.MATERIALCODE,
  146. gdd.goodscode,
  147. HGDI.WORKSHOP,
  148. HGDI.DATACODE,
  149. 1 AS ITEM,
  150. GDD.TESTMOULDFLAG,
  151. G.GOODS_LINE_CODE AS ZSCS
  152. FROM
  153. TP_PM_PRODUCTIONDATA PD
  154. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  155. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  156. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  157. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  158. AND HGDI.ITEMTYPE = 1
  159. AND HGDI.ITEMID = PD.PROCEDUREID
  160. AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  161. WHERE
  162. PD.VALUEFLAG = 1
  163. AND PD.CREATETIME >= :v_datebegin
  164. AND PD.CREATETIME < :in_dateend
  165. AND(
  166. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  167. OR(
  168. HGDI.WORKSHOP = 3
  169. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  170. )
  171. )
  172. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1
  173. UNION ALL
  174. --产量撤销
  175. SELECT
  176. GDD.MATERIALCODE,
  177. GDD.goodscode,
  178. HGDI.WORKSHOP,
  179. HGDI.DATACODE AS DATACODE,
  180. 2 AS ITEM,
  181. GDD.TESTMOULDFLAG,
  182. G.GOODS_LINE_CODE AS ZSCS
  183. FROM
  184. TP_PM_PRODUCTIONDATA PD
  185. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  186. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  187. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  188. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  189. AND HGDI.ITEMID = PD.PROCEDUREID
  190. AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  191. WHERE
  192. PD.VALUEFLAG = 0
  193. AND PD.BACKOUTTIME >= :v_datebegin
  194. AND PD.BACKOUTTIME < :in_dateend
  195. AND(
  196. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  197. OR(
  198. HGDI.WORKSHOP = 3
  199. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  200. )
  201. )
  202. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 工序报损
  203. UNION ALL
  204. SELECT
  205. GDD.MATERIALCODE,
  206. GDD.goodscode,
  207. HGDI.WORKSHOP,
  208. HGDI.DATACODE AS DATACODE,
  209. 3 AS ITEM,
  210. GDD.TESTMOULDFLAG,
  211. G.GOODS_LINE_CODE AS ZSCS
  212. FROM
  213. TP_PM_SCRAPPRODUCT SP
  214. INNER JOIN tp_pm_productiondata pd ON pd.productiondataid = sp.productiondataid
  215. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  216. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  217. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  218. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  219. AND HGDI.ITEMTYPE = 2
  220. AND HGDI.ITEMID = PD.PROCEDUREID
  221. AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  222. WHERE
  223. SP.AUDITSTATUS = 1
  224. AND SP.AUDITDATE >= :v_datebegin
  225. AND SP.AUDITDATE < :in_dateend
  226. AND(
  227. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  228. OR(
  229. HGDI.WORKSHOP = 3
  230. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  231. )
  232. )
  233. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 工序报损撤销
  234. UNION ALL
  235. SELECT
  236. GDD.MATERIALCODE,
  237. GDD.goodscode,
  238. HGDI.WORKSHOP,
  239. HGDI.DATACODE AS DATACODE,
  240. 4 AS ITEM,
  241. GDD.TESTMOULDFLAG,
  242. G.GOODS_LINE_CODE AS ZSCS
  243. FROM
  244. TP_PM_SCRAPPRODUCT SP
  245. INNER JOIN tp_pm_productiondata pd ON pd.productiondataid = sp.productiondataid
  246. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  247. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  248. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  249. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  250. AND HGDI.ITEMTYPE = 2
  251. AND HGDI.ITEMID = PD.PROCEDUREID
  252. AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  253. WHERE
  254. SP.AUDITSTATUS = 1
  255. AND SP.VALUEFLAG = '0'
  256. AND SP.BACKOUTTIME >= :v_datebegin
  257. AND SP.BACKOUTTIME < :in_dateend
  258. AND(
  259. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  260. OR(
  261. HGDI.WORKSHOP = 3
  262. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  263. )
  264. )
  265. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 盘点清除
  266. UNION ALL
  267. SELECT
  268. GDD.MATERIALCODE,
  269. GDD.GOODSCODE,
  270. HGDI.WORKSHOP,
  271. HGDI.DATACODE,
  272. 5 AS ITEM,
  273. GDD.TESTMOULDFLAG ,
  274. G.GOODS_LINE_CODE AS ZSCS
  275. FROM
  276. TP_PM_GOODSCHANGEHISTORY GH
  277. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  278. INNER JOIN TP_MST_GOODS G ON GH.GOODSID = G.GOODSID
  279. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  280. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  281. AND HGDI.ITEMTYPE = 2
  282. AND HGDI.ITEMID = GH.OTHERID
  283. WHERE
  284. GH.CREATETIME >= :v_datebegin
  285. AND GH.CREATETIME < :in_dateend
  286. AND GH.DATATYPE IN( 11, 12 )
  287. AND(
  288. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  289. OR(
  290. HGDI.WORKSHOP = 3
  291. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  292. )
  293. )
  294. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 干补
  295. UNION ALL
  296. SELECT
  297. GDD.MATERIALCODE,
  298. GDD.GOODSCODE,
  299. HGDI.WORKSHOP,
  300. HGDI.DATACODE,
  301. 6 AS ITEM,
  302. GDD.TESTMOULDFLAG,
  303. G.GOODS_LINE_CODE AS ZSCS
  304. FROM
  305. TP_PM_SCRAPPRODUCT SP
  306. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  307. INNER JOIN TP_MST_GOODS G ON SP.GOODSID = G.GOODSID
  308. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  309. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  310. AND HGDI.ITEMTYPE = 2
  311. AND HGDI.ITEMID = SP.PROCEDUREID
  312. WHERE
  313. SP.AUDITSTATUS = 1
  314. AND SP.VALUEFLAG = '1'
  315. AND SP.GOODSLEVELTYPEID = 9
  316. AND SP.SPECIALREPAIRTIME >= :v_datebegin
  317. AND SP.SPECIALREPAIRTIME < :in_dateend
  318. AND(
  319. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  320. OR(
  321. HGDI.WORKSHOP = 3
  322. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  323. )
  324. )
  325. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 回收
  326. UNION ALL
  327. SELECT
  328. GDD.MATERIALCODE,
  329. GDD.GOODSCODE,
  330. HGDI.WORKSHOP,
  331. HGDI.DATACODE,
  332. 7 AS ITEM,
  333. GDD.TESTMOULDFLAG,
  334. G.GOODS_LINE_CODE AS ZSCS
  335. FROM
  336. TP_PM_SCRAPPRODUCT SP
  337. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  338. INNER JOIN TP_MST_GOODS G ON SP.GOODSID = G.GOODSID
  339. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  340. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  341. AND HGDI.ITEMTYPE = 2
  342. AND HGDI.ITEMID = SP.PROCEDUREID
  343. WHERE
  344. SP.AUDITSTATUS = 1
  345. AND SP.VALUEFLAG = '1'
  346. AND SP.RECYCLINGFLAG = '1'
  347. AND SP.RECYCLINGTIME >= :v_datebegin
  348. AND SP.RECYCLINGTIME < :in_dateend
  349. AND(
  350. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  351. OR(
  352. HGDI.WORKSHOP = 3
  353. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  354. )
  355. )
  356. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1
  357. )
  358. GROUP BY
  359. MATERIALCODE,
  360. GOODSCODE,
  361. WORKSHOP,
  362. DATACODE,
  363. ITEM,
  364. TESTMOULDFLAG,
  365. ZSCS
  366. ORDER BY
  367. DATACODE,
  368. ITEM,
  369. WORKSHOP";
  370. OracleParameter[] paras = new OracleParameter[]
  371. {
  372. new OracleParameter(":v_datebegin", OracleDbType.Date, date, ParameterDirection.Input),
  373. new OracleParameter(":in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  374. };
  375. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  376. sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  377. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  378. if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "0")
  379. {
  380. string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<CrossWorkShopToSAP>.ConvertToModel(workData)) + "}}";
  381. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  382. //string url033 = ini.ReadIniData("SAP_NEW_INFO", "Url033");
  383. string url033 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM033";
  384. string result = PostData(url033, postString, "POST");
  385. string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  386. string msg = JObject.Parse(result)["ZMSG"].ToString();
  387. //sqlString = "update TSAP_HEGII_DATALOG_KCJZY t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid";
  388. //paras = new OracleParameter[]
  389. //{
  390. // new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  391. // new OracleParameter(":DataStuts", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  392. // new OracleParameter(":msg", OracleDbType.Varchar2, msg, ParameterDirection.Input),
  393. //};
  394. //oracleConn.ExecuteNonQuery(sqlString, paras);
  395. oracleConn.Commit();
  396. }
  397. #endregion
  398. }
  399. catch (Exception ex)
  400. {
  401. OutputLog.TraceLog(LogPriority.Error,
  402. "CrossWorkshopToSAP",
  403. "跨车间作业量" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  404. ex.ToString(),
  405. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  406. }
  407. }
  408. /// <summary>
  409. /// 查询跨车间作业同步日志
  410. /// </summary>
  411. /// <param name="cre"></param>
  412. /// <param name="userInfo"></param>
  413. /// <returns></returns>
  414. public static ServiceResultEntity GetDataLog_kczzy(ClientRequestEntity cre)
  415. {
  416. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  417. ServiceResultEntity sre = new ServiceResultEntity();
  418. try
  419. {
  420. string sqlString = "SELECT\n" +
  421. " dl.logid,\n" +
  422. " dl.begintime,\n" +
  423. " dl.endtime,\n" +
  424. " dl.yyyymmdd,\n" +
  425. " dl.workcode,\n" +
  426. " dl.datastuts,\n" +
  427. " dl.datamsg,\n" +
  428. " dl.executedatebegin,\n" +
  429. " dl.executedateend,\n" +
  430. " u.usercode synusercode\n" +
  431. "FROM\n" +
  432. " tsap_hegii_datalog_kcjzy dl\n" +
  433. " LEFT JOIN tp_mst_user u ON u.userid = dl.createuserid \n" +
  434. "WHERE\n" +
  435. " dl.EXECUTEDATEBEGIN >= :datebegin \n" +
  436. " AND dl.EXECUTEDATEEND <= :dateend \n";
  437. OracleParameter[] oracleParameter = new OracleParameter[]
  438. {
  439. new OracleParameter(":datebegin",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  440. new OracleParameter(":dateend",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  441. };
  442. string datastuts = cre.Properties["datastuts"] + "";
  443. if (!string.IsNullOrEmpty(datastuts))
  444. {
  445. sqlString += " and dl.datastuts in (" + datastuts + ")\n";
  446. }
  447. sqlString += "ORDER BY dl.logid DESC\n";
  448. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  449. return sre;
  450. }
  451. catch (Exception ex)
  452. {
  453. throw ex;
  454. }
  455. }
  456. /// <summary>
  457. /// 查询同步明细
  458. /// </summary>
  459. /// <param name="logid"></param>
  460. /// <param name="userInfo"></param>
  461. /// <returns></returns>
  462. public static ServiceResultEntity GetWorkData_kczzy(ClientRequestEntity cre)
  463. {
  464. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  465. ServiceResultEntity sre = new ServiceResultEntity();
  466. try
  467. {
  468. int logid = Convert.ToInt32(cre.Request);
  469. string sqlString = "\n" +
  470. "select wd.workshop\n" +
  471. " ,case when wd.workshop = 2 then '二车间' when wd.workshop = 3 then '三车间' else '-' end workshopname\n " +
  472. " ,case when wd.item = 1 then '产量' when wd.item = 2 then '产量撤销' when wd.item = 3 then '工序报损' when wd.item = 4 then '工序报损撤销' \n" +
  473. " when wd.item = 5 then '盘点清除' when wd.item = 6 then '干补' when wd.item = 7 then '回收' else '-' end as itemname\n" +
  474. " ,item\n" +
  475. " ,wd.datacode\n" +
  476. " ,dc.datacodename\n" +
  477. " ,wd.goodscode\n" +
  478. " ,wd.sapcode\n" +
  479. " ,wd.num\n" +
  480. " ,wd.createtime\n" +
  481. " ,wd.testmouldflag\n" +
  482. " ,wd.zscs\n" +
  483. " ,case when wd.zscs = 'L' then '立浇【L】' when wd.zscs = 'G' then '高压【G】' when wd.zscs = 'M' then '粘接高压(三水厂)【M】' when wd.zscs = 'Q' then '吊装线【Q】' else '-' end as zscsname\n" +
  484. " ,wd.logid\n" +
  485. " from tsap_hegii_workdata_kcjzy wd\n" +
  486. " inner join tsap_hegii_datacode dc\n" +
  487. " on dc.datacode = wd.datacode\n";
  488. if (logid > 0)
  489. {
  490. sqlString += " where wd.logid = :logid \n";
  491. }
  492. else
  493. {
  494. sqlString += " inner join tsap_hegii_datalog_kcjzy dl\n" +
  495. " on wd.logid=dl.logid \n" +
  496. " where dl.EXECUTEDATEBEGIN>= :datebegin \n" +
  497. " and dl.EXECUTEDATEEND<= :dateend \n";
  498. }
  499. sqlString += " order by wd.datacode,wd.item,wd.workshop \n";
  500. OracleParameter[] oracleParameter = new OracleParameter[]
  501. {
  502. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  503. new OracleParameter(":datebegin",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  504. new OracleParameter(":dateend",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  505. };
  506. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  507. return sre;
  508. }
  509. catch (Exception ex)
  510. {
  511. throw ex;
  512. }
  513. }
  514. #endregion
  515. #region 报工
  516. ///// <summary>
  517. ///// 同步SAP数据(自动)
  518. ///// </summary>
  519. ///// <param name="date"></param>
  520. //public static void AutoWorkDataToSAP5000(DateTime date, string funCode)
  521. //{
  522. // if (string.IsNullOrWhiteSpace(funCode))
  523. // {
  524. // //return;
  525. // funCode = "ALL";
  526. // }
  527. // funCode = "," + funCode + ",";
  528. // ServiceResultEntity sre = null;
  529. // // 10 模具
  530. // if (funCode == ",ALL," || funCode.Contains(",10,"))
  531. // {
  532. // try
  533. // {
  534. // sre = SetWorkData10_50(date, "10", 0);
  535. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  536. // "S" != sre.Result + "")
  537. // {
  538. // OutputLog.TraceLog(LogPriority.Warning,
  539. // "AutoWorkDataToSAP",
  540. // "10 模具 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  541. // JsonHelper.ToJson(sre),
  542. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  543. // }
  544. // }
  545. // catch (Exception ex)
  546. // {
  547. // OutputLog.TraceLog(LogPriority.Error,
  548. // "AutoWorkDataToSAP",
  549. // "10 模具 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  550. // ex.ToString(),
  551. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  552. // }
  553. // }
  554. // // 20 湿坯
  555. // if (funCode == ",ALL," || funCode.Contains(",20,"))
  556. // {
  557. // try
  558. // {
  559. // sre = SetWorkData10_50(date, "20", 0);
  560. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  561. // "S" != sre.Result + "")
  562. // {
  563. // OutputLog.TraceLog(LogPriority.Warning,
  564. // "AutoWorkDataToSAP",
  565. // "20 湿坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  566. // JsonHelper.ToJson(sre),
  567. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  568. // }
  569. // }
  570. // catch (Exception ex)
  571. // {
  572. // OutputLog.TraceLog(LogPriority.Error,
  573. // "AutoWorkDataToSAP",
  574. // "20 湿坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  575. // ex.ToString(),
  576. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  577. // }
  578. // }
  579. // // 30 精坯
  580. // if (funCode == ",ALL," || funCode.Contains(",30,"))
  581. // {
  582. // try
  583. // {
  584. // sre = SetWorkData10_50(date, "30", 0);
  585. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  586. // "S" != sre.Result + "")
  587. // {
  588. // OutputLog.TraceLog(LogPriority.Warning,
  589. // "AutoWorkDataToSAP",
  590. // "30 精坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  591. // JsonHelper.ToJson(sre),
  592. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  593. // }
  594. // }
  595. // catch (Exception ex)
  596. // {
  597. // OutputLog.TraceLog(LogPriority.Error,
  598. // "AutoWorkDataToSAP",
  599. // "30 精坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  600. // ex.ToString(),
  601. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  602. // }
  603. // }
  604. // // 40 釉坯
  605. // if (funCode == ",ALL," || funCode.Contains(",40,"))
  606. // {
  607. // try
  608. // {
  609. // sre = SetWorkData10_50(date, "40", 0);
  610. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  611. // "S" != sre.Result + "")
  612. // {
  613. // OutputLog.TraceLog(LogPriority.Warning,
  614. // "AutoWorkDataToSAP",
  615. // "40 釉坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  616. // JsonHelper.ToJson(sre),
  617. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  618. // }
  619. // }
  620. // catch (Exception ex)
  621. // {
  622. // OutputLog.TraceLog(LogPriority.Error,
  623. // "AutoWorkDataToSAP",
  624. // "40 釉坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  625. // ex.ToString(),
  626. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  627. // }
  628. // }
  629. // // 50 烧成
  630. // if (funCode == ",ALL," || funCode.Contains(",50,"))
  631. // {
  632. // try
  633. // {
  634. // sre = SetWorkData10_50(date, "50", 0);
  635. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  636. // "S" != sre.Result + "")
  637. // {
  638. // OutputLog.TraceLog(LogPriority.Warning,
  639. // "AutoWorkDataToSAP",
  640. // "50 烧成 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  641. // JsonHelper.ToJson(sre),
  642. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  643. // }
  644. // }
  645. // catch (Exception ex)
  646. // {
  647. // OutputLog.TraceLog(LogPriority.Error,
  648. // "AutoWorkDataToSAP",
  649. // "50 烧成 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  650. // ex.ToString(),
  651. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  652. // }
  653. // }
  654. // //// 6001 成品明细
  655. // //if (funCode == ",ALL," || funCode.Contains(",6001,"))
  656. // //{
  657. // // try
  658. // // {
  659. // // sre = SetFP6001(date, 0);
  660. // // if (sre.Status != Constant.ServiceResultStatus.Success ||
  661. // // "S" != sre.Result + "")
  662. // // {
  663. // // OutputLog.TraceLog(LogPriority.Warning,
  664. // // "AutoWorkDataToSAP",
  665. // // "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  666. // // JsonHelper.ToJson(sre),
  667. // // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  668. // // }
  669. // // }
  670. // // catch (Exception ex)
  671. // // {
  672. // // OutputLog.TraceLog(LogPriority.Error,
  673. // // "AutoWorkDataToSAP",
  674. // // "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  675. // // ex.ToString(),
  676. // // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  677. // // }
  678. // //}
  679. // //// 6001 成品明细(小时)-20分钟
  680. // //if (funCode == ",6002,")
  681. // //{
  682. // // try
  683. // // {
  684. // // sre = SetFP6002(date, 0);
  685. // // if (sre.Status != Constant.ServiceResultStatus.Success ||
  686. // // "S" != sre.Result + "")
  687. // // {
  688. // // OutputLog.TraceLog(LogPriority.Warning,
  689. // // "AutoWorkDataToSAP",
  690. // // "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  691. // // JsonHelper.ToJson(sre),
  692. // // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  693. // // }
  694. // // }
  695. // // catch (Exception ex)
  696. // // {
  697. // // OutputLog.TraceLog(LogPriority.Error,
  698. // // "AutoWorkDataToSAP",
  699. // // "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  700. // // ex.ToString(),
  701. // // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  702. // // }
  703. // //}
  704. //}
  705. /// <summary>
  706. /// 同步SAP数据(自动)(重载)
  707. /// </summary>
  708. /// <param name="date">当前时间</param>
  709. /// <param name="funCode">工序码</param>
  710. /// <param name="ndate">本次要执行到的时间</param>
  711. public static void AutoWorkDataToSAP5000(string funCode, DateTime ndate)
  712. {
  713. if (string.IsNullOrWhiteSpace(funCode))
  714. {
  715. //return;
  716. funCode = "ALL";
  717. }
  718. funCode = "," + funCode + ",";
  719. ServiceResultEntity sre = null;
  720. // 10 模具
  721. if (funCode == ",ALL," || funCode.Contains(",10,"))
  722. {
  723. try
  724. {
  725. sre = SetWorkData10_50_5000("10", ndate);
  726. if (sre.Status != Constant.ServiceResultStatus.Success ||
  727. "S" != sre.Result + "")
  728. {
  729. OutputLog.TraceLog(LogPriority.Warning,
  730. "AutoWorkDataToSAP5000",
  731. "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  732. JsonHelper.ToJson(sre),
  733. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  734. }
  735. }
  736. catch (Exception ex)
  737. {
  738. OutputLog.TraceLog(LogPriority.Error,
  739. "AutoWorkDataToSAP5000",
  740. "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  741. ex.ToString(),
  742. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  743. }
  744. }
  745. // 20 湿坯
  746. if (funCode == ",ALL," || funCode.Contains(",20,"))
  747. {
  748. try
  749. {
  750. sre = SetWorkData10_50_5000("20", ndate);
  751. if (sre.Status != Constant.ServiceResultStatus.Success ||
  752. "S" != sre.Result + "")
  753. {
  754. OutputLog.TraceLog(LogPriority.Warning,
  755. "AutoWorkDataToSAP5000",
  756. "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  757. JsonHelper.ToJson(sre),
  758. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  759. }
  760. }
  761. catch (Exception ex)
  762. {
  763. OutputLog.TraceLog(LogPriority.Error,
  764. "AutoWorkDataToSAP5000",
  765. "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  766. ex.ToString(),
  767. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  768. }
  769. }
  770. // 30 精坯
  771. if (funCode == ",ALL," || funCode.Contains(",30,"))
  772. {
  773. try
  774. {
  775. sre = SetWorkData10_50_5000("30", ndate);
  776. if (sre.Status != Constant.ServiceResultStatus.Success ||
  777. "S" != sre.Result + "")
  778. {
  779. OutputLog.TraceLog(LogPriority.Warning,
  780. "AutoWorkDataToSAP5000",
  781. "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  782. JsonHelper.ToJson(sre),
  783. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  784. }
  785. }
  786. catch (Exception ex)
  787. {
  788. OutputLog.TraceLog(LogPriority.Error,
  789. "AutoWorkDataToSAP5000",
  790. "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  791. ex.ToString(),
  792. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  793. }
  794. }
  795. // 40 釉坯
  796. if (funCode == ",ALL," || funCode.Contains(",40,"))
  797. {
  798. try
  799. {
  800. sre = SetWorkData10_50_5000("40", ndate);
  801. if (sre.Status != Constant.ServiceResultStatus.Success ||
  802. "S" != sre.Result + "")
  803. {
  804. OutputLog.TraceLog(LogPriority.Warning,
  805. "AutoWorkDataToSAP5000",
  806. "40 釉坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  807. JsonHelper.ToJson(sre),
  808. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  809. }
  810. }
  811. catch (Exception ex)
  812. {
  813. OutputLog.TraceLog(LogPriority.Error,
  814. "AutoWorkDataToSAP5000",
  815. "40 釉坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  816. ex.ToString(),
  817. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  818. }
  819. }
  820. // 50 烧成
  821. if (funCode == ",ALL," || funCode.Contains(",50,"))
  822. {
  823. try
  824. {
  825. sre = SetWorkData10_50_5000("50", ndate);
  826. if (sre.Status != Constant.ServiceResultStatus.Success ||
  827. "S" != sre.Result + "")
  828. {
  829. OutputLog.TraceLog(LogPriority.Warning,
  830. "AutoWorkDataToSAP5000",
  831. "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  832. JsonHelper.ToJson(sre),
  833. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  834. }
  835. }
  836. catch (Exception ex)
  837. {
  838. OutputLog.TraceLog(LogPriority.Error,
  839. "AutoWorkDataToSAP5000",
  840. "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  841. ex.ToString(),
  842. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  843. }
  844. }
  845. }
  846. /// <summary>
  847. /// 执行与推送
  848. /// </summary>
  849. /// <param name="datacode"></param>
  850. /// <param name="ndate"></param>
  851. /// <returns></returns>
  852. public static ServiceResultEntity SetWorkData10_50_5000(string datacode, DateTime ndate)
  853. {
  854. ServiceResultEntity sre = new ServiceResultEntity();
  855. IDBTransaction oracleConn = null;
  856. try
  857. {
  858. #region 事务1,执行存储过程
  859. OracleParameter[] paras = null;
  860. int logid = 0;
  861. string message = string.Empty;
  862. // 10 模具
  863. if ("10".Equals(datacode))
  864. {
  865. paras = new OracleParameter[]
  866. {
  867. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  868. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  869. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  870. };
  871. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  872. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG10", paras);
  873. int.TryParse(paras[1].Value + "", out logid);
  874. message = paras[2].Value + "";
  875. oracleConn.Commit();
  876. }
  877. // 20 湿坯
  878. else if ("20".Equals(datacode))
  879. {
  880. paras = new OracleParameter[]
  881. {
  882. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  883. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  884. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  885. };
  886. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  887. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG20", paras);
  888. int.TryParse(paras[1].Value + "", out logid);
  889. message = paras[2].Value + "";
  890. oracleConn.Commit();
  891. }
  892. // 30 精坯、40 釉坯
  893. else if ("30".Equals(datacode) || "40".Equals(datacode))
  894. {
  895. paras = new OracleParameter[]
  896. {
  897. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  898. new OracleParameter("in_datacode", OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  899. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  900. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  901. };
  902. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  903. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG", paras);
  904. int.TryParse(paras[2].Value + "", out logid);
  905. message = paras[3].Value + "";
  906. oracleConn.Commit();
  907. }
  908. // 50 烧成
  909. else if ("50".Equals(datacode))
  910. {
  911. paras = new OracleParameter[]
  912. {
  913. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  914. new OracleParameter("in_datacode", OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  915. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  916. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  917. };
  918. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  919. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG50", paras);
  920. int.TryParse(paras[2].Value + "", out logid);
  921. message = paras[3].Value + "";
  922. oracleConn.Commit();
  923. }
  924. // 如果logid为0,则数据没有生成
  925. if (logid == 0)
  926. {
  927. sre.Status = Constant.ServiceResultStatus.Other;
  928. sre.Message = message;
  929. return sre;
  930. }
  931. #endregion
  932. // 事物2,同步SAP接口
  933. string sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  934. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  935. if (SAP_ING_NEW == "1")
  936. {
  937. sre = SyncSap5000(ndate, datacode);
  938. }
  939. return sre;
  940. }
  941. catch (Exception ex)
  942. {
  943. throw ex;
  944. }
  945. finally
  946. {
  947. if (oracleConn != null &&
  948. oracleConn.ConnState == ConnectionState.Open)
  949. {
  950. oracleConn.Disconnect();
  951. }
  952. }
  953. }
  954. /// <summary>
  955. /// 同步SAP接口5000端口新
  956. /// </summary>
  957. /// <param name="date"></param>
  958. /// <param name="datacode"></param>
  959. /// <param name="userid"></param>
  960. /// <param name="logid"></param>
  961. /// <returns></returns>
  962. public static ServiceResultEntity SyncSap5000(DateTime date, string datacode)
  963. {
  964. ServiceResultEntity sre = new ServiceResultEntity();
  965. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  966. try
  967. {
  968. OracleParameter[] paras = null;
  969. int r = 0;
  970. // 查询当前节点所有不为S的日志
  971. string sqlString = @"
  972. SELECT DL.LOGID
  973. FROM TSAP_HEGII_DATALOG_BG DL
  974. WHERE 1 = 1
  975. AND DL.DATASTUTS = 'F'
  976. AND DL.LOGID > 6
  977. AND DL.DATACODE = :DATACODE ";
  978. paras = new OracleParameter[]
  979. {
  980. new OracleParameter(":DATACODE", datacode),
  981. };
  982. DataTable dtLogID = oracleConn.GetSqlResultToDt(sqlString, paras);
  983. string logIDs = "," + string.Join(",", dtLogID.AsEnumerable().Select(d => d.Field<decimal>("LOGID")).ToArray()) + ",";
  984. sqlString = @"
  985. SELECT TO_CHAR(WD.YYYYMMDD) YYYYMMDD,
  986. WD.WORKCODE AS WERKS,
  987. TO_CHAR(WD.GOODSCODE) GROES,
  988. TO_CHAR(WD.SAPCODE) MATNR,
  989. TO_CHAR(WD.USERCODE) ZGHNU,
  990. TO_CHAR(WD.DATACODE) ZJDNU,
  991. TO_CHAR(WD.YYYYMMDD) ZSCNU,
  992. TO_CHAR(DL.EXECUTEDATEBEGIN, 'HH24MISS') ZKSSJ,
  993. TO_CHAR(DL.EXECUTEDATEEND, 'YYYYMMDDHH24MISS') ZJSRQ,
  994. TO_CHAR(WD.ORDERCODE) VBELN,
  995. TO_CHAR(WD.ORDERITEM) POSNR,
  996. TO_CHAR(WD.OUTPUTNUM) ZCLNG,
  997. TO_CHAR(WD.SCRAPNUM) ZSPNG,
  998. TO_CHAR(WD.CLEANUPNUM) ZQCNG,
  999. TO_CHAR(WD.RECOVERYNUM) ZHSNG,
  1000. TO_CHAR(WD.REPAIRNUM) ZGBNG,
  1001. TO_CHAR(WD.TESTMOULDFLAG) ZSCMS,
  1002. DECODE(:DATACODE, 20, TO_CHAR(WD.ZSCS), 'T') AS ZSCS,
  1003. TO_CHAR(WD.WORKSHOP) ZSCCJ,
  1004. WD.CHARG,
  1005. TO_CHAR(:DATACODE) DATACODE,
  1006. WD.WORKCODE || WD.CHARG || LPAD(DL.LOGID, 10,'0') AS ZID
  1007. FROM TSAP_HEGII_WORKDATA_BG WD
  1008. INNER JOIN TSAP_HEGII_DATALOG_BG DL
  1009. ON WD.LOGID = DL.LOGID
  1010. WHERE INSTR(:LOGIDS, ',' || WD.LOGID || ',') > 0 ";
  1011. paras = new OracleParameter[]
  1012. {
  1013. new OracleParameter(":DATACODE",datacode),
  1014. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  1015. };
  1016. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  1017. int num = workData.Rows.Count;
  1018. // 调用SAP接口
  1019. string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(workData)) + "}}";
  1020. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  1021. // 配置文件
  1022. string url030 = ini.ReadIniData("SAP_NEW_INFO", "Url030");
  1023. // 测试
  1024. // string url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030";
  1025. // 正式
  1026. //string url030 = "http://hgs4powd1.hegii.com:8000/RESTAdapter/DKMES/ZPPFM030";
  1027. string result = PostData(url030, postString, "POST");
  1028. sqlString = @"
  1029. UPDATE TSAP_HEGII_DATALOG_BG T
  1030. SET T.ENDTIME = SYSDATE,
  1031. DATASTUTS = :DATASTUTS,
  1032. DATAMSG = :MSG
  1033. WHERE INSTR(:LOGIDS, ',' || LOGID || ',') > 0 ";
  1034. paras = new OracleParameter[]
  1035. {
  1036. new OracleParameter(":DATASTUTS",OracleDbType.Varchar2, JObject.Parse(result)["ZTYPE"].ToString(), ParameterDirection.Input),
  1037. new OracleParameter(":MSG",OracleDbType.Varchar2, JObject.Parse(result)["ZMSG"].ToString(), ParameterDirection.Input),
  1038. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  1039. };
  1040. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  1041. oracleConn.Commit();
  1042. sre.Message = JObject.Parse(result)["ZMSG"].ToString();
  1043. sre.Result = JObject.Parse(result)["ZTYPE"].ToString();
  1044. return sre;
  1045. }
  1046. catch (Exception ex)
  1047. {
  1048. OutputLog.TraceLog(LogPriority.Error,
  1049. "BGToSAP",
  1050. "报工" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  1051. ex.ToString(),
  1052. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  1053. throw ex;
  1054. }
  1055. finally
  1056. {
  1057. if (oracleConn != null &&
  1058. oracleConn.ConnState == ConnectionState.Open)
  1059. {
  1060. oracleConn.Disconnect();
  1061. }
  1062. }
  1063. }
  1064. /// <summary>
  1065. /// 查询同步日志
  1066. /// </summary>
  1067. /// <param name="cre"></param>
  1068. /// <param name="userInfo"></param>
  1069. /// <returns></returns>
  1070. public static ServiceResultEntity GetDataLog_BG(ClientRequestEntity cre)
  1071. {
  1072. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1073. ServiceResultEntity sre = new ServiceResultEntity();
  1074. try
  1075. {
  1076. string sqlString =
  1077. "select dl.logid\n" +
  1078. " ,dl.logtype\n" +
  1079. " ,dl.begintime\n" +
  1080. " ,dl.endtime\n" +
  1081. " ,dl.yyyymmdd\n" +
  1082. " ,dl.workcode\n" +
  1083. " ,dl.datacode\n" +
  1084. " ,dc.datacodename\n" +
  1085. " ,dl.datastuts\n" +
  1086. " ,dl.datamsg\n" +
  1087. " ,dl.datalogid\n" +
  1088. " ,dl.executedatebegin\n" +
  1089. " ,dl.executedateend\n" +
  1090. " ,u.usercode synusercode\n" +
  1091. " from TSAP_HEGII_DATALOG_BG dl\n" +
  1092. " inner join tsap_hegii_datacode dc\n" +
  1093. " on dc.datacode = dl.datacode\n" +
  1094. " left join tp_mst_user u\n" +
  1095. " on u.userid = dl.createuserid\n" +
  1096. " where dl.logtype IN('2','3')\n" +
  1097. " and dl.executedatebegin >= :DATEBEGIN\n" +
  1098. " and dl.executedateend < :DATEEND\n" +
  1099. " and (-1= :DATACODE or dl.datacode=:DATACODE )";//add xiacm 2022-10-12
  1100. OracleParameter[] oracleParameter = new OracleParameter[]
  1101. {
  1102. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  1103. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  1104. new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input),
  1105. };
  1106. sqlString += "ORDER BY dl.logid DESC\n";
  1107. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1108. return sre;
  1109. }
  1110. catch (Exception ex)
  1111. {
  1112. throw ex;
  1113. }
  1114. }
  1115. /// <summary>
  1116. /// 查询同步明细
  1117. /// </summary>
  1118. /// <param name="logid"></param>
  1119. /// <param name="userInfo"></param>
  1120. /// <returns></returns>
  1121. public static ServiceResultEntity GetWorkData_BG(ClientRequestEntity cre)
  1122. {
  1123. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1124. ServiceResultEntity sre = new ServiceResultEntity();
  1125. try
  1126. {
  1127. int logid = Convert.ToInt32(cre.Request);
  1128. string sqlString = "\n" +
  1129. "select wd.yyyymmdd\n" +
  1130. " ,wd.workcode\n" +
  1131. " ,wd.datacode\n" +
  1132. " ,dc.datacodename\n" +
  1133. " ,wd.goodscode\n" +
  1134. " ,wd.sapcode\n" +
  1135. " ,wd.usercode\n" +
  1136. " ,wd.ordercode\n" +
  1137. " ,wd.orderitem\n" +
  1138. " ,to_number(wd.outputnum) outputnum\n" +
  1139. " ,to_number(wd.scrapnum) scrapnum\n" +
  1140. " ,to_number(wd.cleanupnum) cleanupnum\n" +
  1141. " ,to_number(wd.recoverynum) recoverynum\n" +
  1142. " ,to_number(wd.repairnum) repairnum\n" +
  1143. " ,wd.createtime\n" +
  1144. " ,wd.ztype\n" +
  1145. " ,wd.zmsg\n" +
  1146. " ,wd.ztime\n" +
  1147. " ,wd.testmouldflag\n" +
  1148. " ,wd.zscs\n" +
  1149. " ,wd.logid\n" +
  1150. " from tsap_hegii_workdata_BG wd\n" +
  1151. " inner join TSAP_HEGII_DATALOG_BG dl\n" +
  1152. " on dl.logid = wd.logid\n" +
  1153. " inner join tsap_hegii_datacode dc\n" +
  1154. " on dc.datacode = wd.datacode\n";
  1155. //update xiacm 2022-10-12
  1156. if (logid > 0)
  1157. {
  1158. sqlString += " where wd.logid = :logid \n";
  1159. }
  1160. else
  1161. {
  1162. sqlString += " where dl.executedatebegin >= :DATEBEGIN and dl.executedateend < :DATEEND";
  1163. sqlString += " and (-1= :DATACODE OR wd.datacode = :DATACODE)";
  1164. }
  1165. sqlString += " order by wd.goodscode,wd.sapcode,wd.usercode,wd.ordercode,wd.outputnum \n";
  1166. OracleParameter[] oracleParameter = new OracleParameter[]
  1167. {
  1168. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  1169. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  1170. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  1171. new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input),
  1172. };
  1173. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1174. return sre;
  1175. }
  1176. catch (Exception ex)
  1177. {
  1178. throw ex;
  1179. }
  1180. }
  1181. /// <summary>
  1182. /// 报工汇总 add xiacm 2022-10-12
  1183. /// </summary>
  1184. /// <param name="cre"></param>
  1185. /// <returns></returns>
  1186. public static ServiceResultEntity GetDataLogTotal_BG(ClientRequestEntity cre)
  1187. {
  1188. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1189. ServiceResultEntity sre = new ServiceResultEntity();
  1190. try
  1191. {
  1192. string sqlString = @"
  1193. SELECT T1.DATACODE,
  1194. T1.ACTUALOUTPUT,
  1195. T2.OUTPUT,
  1196. T2.SCRAPNUM,
  1197. T2.CLEANNUPNUM,
  1198. T2.RECOVERYNUM,
  1199. T2.REPAIRNUM,
  1200. T3.DRCXFDRJJDCCP,
  1201. T4.DRJJBQTRCXDCCP,
  1202. T1.ACTUALOUTPUT + NVL(T4.DRJJBQTRCXDCCP, 0) - NVL(T3.DRCXFDRJJDCCP, 0) -
  1203. (T2.OUTPUT + T2.RECOVERYNUM) AS DIFFER
  1204. FROM (
  1205. -- 业务数据汇总
  1206. -- 10
  1207. SELECT '10' AS DATACODE,
  1208. SUM(DECODE(MHH.OPERATIONTYPE, 1, M.STANDARDGROUTINGSUM, 0)) AS ACTUALOUTPUT
  1209. FROM (SELECT MH.GOODSID,
  1210. MH.MOULDID,
  1211. MH.OPERATIONTYPE,
  1212. MH.GROUTINGNUM
  1213. FROM TP_PC_MOULDCHANGEHISTORY MH
  1214. WHERE MH.OPERATIONTYPE IN (1, 2, 3, 9, 11, -1)
  1215. AND MH.CREATETIME >= :DATEBEGIN
  1216. AND MH.CREATETIME < :DATEEND
  1217. UNION ALL
  1218. SELECT MH.GOODSIDAFTER,
  1219. MH.MOULDID,
  1220. 0,
  1221. MH.GROUTINGNUM
  1222. FROM TP_PC_MOULDCHANGEHISTORY MH
  1223. WHERE MH.OPERATIONTYPE = -1
  1224. AND MH.CREATETIME >= :DATEBEGIN
  1225. AND MH.CREATETIME < :DATEEND) MHH
  1226. INNER JOIN TP_PC_MOULD M
  1227. ON M.MOULDID = MHH.MOULDID
  1228. UNION ALL
  1229. -- 20
  1230. SELECT '20' AS DATACODE,
  1231. SUM(DECODE(GH.DATATYPE, 1, 1, -1)) BUSINESSOUTPUT
  1232. FROM TP_PM_GOODSCHANGEHISTORY GH
  1233. INNER JOIN TP_MST_GOODS G
  1234. ON G.GOODSID = GH.GOODSID
  1235. WHERE GH.CREATETIME >= :DATEBEGIN
  1236. AND GH.CREATETIME < :DATEEND
  1237. AND GH.DATATYPE IN (1, 2)
  1238. AND G.SCRAPSUMFLAG = '1'
  1239. UNION ALL
  1240. -- 30
  1241. SELECT '30' AS DATACODE,
  1242. SUM(T1.CC) AS BUSINESSOUTPUT
  1243. FROM (SELECT 1 AS CC
  1244. FROM TP_PM_PRODUCTIONDATA P
  1245. WHERE P.PROCEDUREID IN (53, 97)
  1246. AND P.CREATETIME >= :DATEBEGIN
  1247. AND P.CREATETIME < :DATEEND
  1248. UNION ALL
  1249. SELECT -1 AS CC
  1250. FROM TP_PM_PRODUCTIONDATA P
  1251. WHERE P.PROCEDUREID IN (53, 97)
  1252. AND P.VALUEFLAG = '0'
  1253. AND P.BACKOUTTIME >= :DATEBEGIN
  1254. AND P.BACKOUTTIME < :DATEEND) T1
  1255. UNION ALL
  1256. -- 40
  1257. SELECT '40' AS DATACODE,
  1258. SUM(T1.CC) AS BUSINESSOUTPUT
  1259. FROM (SELECT 1 AS CC
  1260. FROM TP_PM_PRODUCTIONDATA P
  1261. WHERE P.PROCEDUREID IN (65, 99)
  1262. AND P.CREATETIME >= :DATEBEGIN
  1263. AND P.CREATETIME < :DATEEND
  1264. UNION ALL
  1265. SELECT -1 AS CC
  1266. FROM TP_PM_PRODUCTIONDATA P
  1267. WHERE P.PROCEDUREID IN (65, 99)
  1268. AND P.VALUEFLAG = '0'
  1269. AND P.BACKOUTTIME >= :DATEBEGIN
  1270. AND P.BACKOUTTIME < :DATEEND) T1
  1271. UNION ALL
  1272. -- 50
  1273. SELECT '50' AS DATACODE,
  1274. SUM(T1.CC) AS BUSINESSOUTPUT
  1275. FROM (SELECT COUNT(DISTINCT P.BARCODE) AS CC
  1276. FROM TP_PM_PRODUCTIONDATA P
  1277. WHERE P.PROCEDUREID IN (11, 104)
  1278. AND ((P.PROCEDUREID <> 104 AND P.VALUEFLAG = '1') OR
  1279. (P.PROCEDUREID = 104 AND P.ISREFIRE = '0' AND P.CHECKFLAG = '1'))
  1280. AND P.CREATETIME >= :DATEBEGIN
  1281. AND P.CREATETIME < :DATEEND
  1282. UNION ALL
  1283. SELECT -1 AS CC
  1284. FROM TP_PM_PRODUCTIONDATA P
  1285. WHERE P.PROCEDUREID IN (11, 104)
  1286. AND P.VALUEFLAG = '0'
  1287. AND P.PROCEDUREID <> 104
  1288. AND P.ISREFIRE = '0'
  1289. AND P.BACKOUTTIME >= :DATEBEGIN
  1290. AND P.BACKOUTTIME < :DATEEND) T1
  1291. UNION ALL
  1292. -- 60
  1293. SELECT '60' AS DATACODE,
  1294. COUNT(1) AS BUSINESSOUTPUT
  1295. FROM TP_PM_FINISHEDPRODUCT GH
  1296. WHERE GH.FHTIME >= :DATEBEGIN
  1297. AND GH.FHTIME < :DATEEND) T1
  1298. LEFT JOIN (
  1299. -- 当日推送日志数据汇总
  1300. SELECT DATACODE AS DATACODETD,
  1301. SUM(TO_NUMBER(OUTPUTNUM)) AS OUTPUT,
  1302. SUM(TO_NUMBER(SCRAPNUM)) AS SCRAPNUM,
  1303. SUM(TO_NUMBER(CLEANUPNUM)) AS CLEANNUPNUM,
  1304. SUM(TO_NUMBER(RECOVERYNUM)) AS RECOVERYNUM,
  1305. SUM(TO_NUMBER(REPAIRNUM)) AS REPAIRNUM
  1306. FROM TSAP_HEGII_WORKDATA_BG
  1307. WHERE LOGID IN (SELECT LOGID
  1308. FROM TSAP_HEGII_DATALOG_BG T
  1309. WHERE DATASTUTS = 'S'
  1310. AND EXECUTEDATEBEGIN >= :DATEBEGIN
  1311. AND EXECUTEDATEEND <= :DATEEND)
  1312. GROUP BY DATACODE
  1313. ORDER BY DATACODE) T2
  1314. ON T2.DATACODETD = T1.DATACODE
  1315. LEFT JOIN (
  1316. -- 当日撤销非当日交接的产成品
  1317. SELECT '60' AS DATACODE,
  1318. COUNT(WL.CODEI) AS DRCXFDRJJDCCP
  1319. FROM TP_WMS_LOG WL
  1320. WHERE LOGTYPE = 2
  1321. AND EXISTS (SELECT 1
  1322. FROM TP_WMS_LOG WL1
  1323. WHERE WL1.CODEI = WL.CODEI
  1324. AND WL1.LOGTYPE = 1
  1325. AND TRUNC(WL1.CREATETIME) < TRUNC(WL.CREATETIME))
  1326. AND WL.CREATETIME >= :DATEBEGIN
  1327. AND WL.CREATETIME < :DATEEND) T3
  1328. ON T3.DATACODE = T1.DATACODE
  1329. LEFT JOIN (
  1330. -- 当日交接被其他日撤销的产成品
  1331. SELECT '60' AS DATACODE,
  1332. COUNT(WL.CODEI) AS DRJJBQTRCXDCCP
  1333. FROM TP_WMS_LOG WL
  1334. WHERE LOGTYPE = 1
  1335. AND EXISTS (SELECT 1
  1336. FROM TP_WMS_LOG WL1
  1337. WHERE WL1.CODEI = WL.CODEI
  1338. AND WL1.LOGTYPE = 2
  1339. AND TRUNC(WL1.CREATETIME) > TRUNC(WL.CREATETIME))
  1340. AND WL.CREATETIME >= :DATEBEGIN
  1341. AND WL.CREATETIME < :DATEEND) T4
  1342. ON T4.DATACODE = T1.DATACODE
  1343. WHERE (-1 = :DATACODE OR T1.DATACODE = :DATACODE)
  1344. ORDER BY T1.DATACODE ";
  1345. OracleParameter[] oracleParameter = new OracleParameter[]
  1346. {
  1347. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  1348. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  1349. new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input),
  1350. };
  1351. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1352. return sre;
  1353. }
  1354. catch (Exception ex)
  1355. {
  1356. throw ex;
  1357. }
  1358. }
  1359. /// <summary>
  1360. /// 半成品库存 add xiacm 2022-11-09
  1361. /// </summary>
  1362. /// <param name="cre"></param>
  1363. /// <returns></returns>
  1364. public static ServiceResultEntity GetDataIVITotal_BC(ClientRequestEntity cre)
  1365. {
  1366. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1367. ServiceResultEntity sre = new ServiceResultEntity();
  1368. try
  1369. {
  1370. string sqlString = @"SELECT semi.DATACODE ,
  1371. semi.WORKSHOP ,
  1372. semi.MATERIALCODE ,
  1373. semi.GOODSCODE ,
  1374. semi.GOODSNAME ,
  1375. COUNT(1) AS INVENTORYQUANTITY,
  1376. SYSDATE AS CREATETIME
  1377. FROM (
  1378. --配置表里的所有工序
  1379. SELECT DI.DATACODE,
  1380. CASE
  1381. WHEN DI.WORKSHOP = 0
  1382. AND DI.ITEMTYPE = 1
  1383. AND IP.KILNCODE = 'SK1' THEN
  1384. 1
  1385. WHEN DI.WORKSHOP = 0
  1386. AND DI.ITEMTYPE = 1
  1387. AND IP.KILNCODE = 'SK2' THEN
  1388. 2
  1389. WHEN DI.WORKSHOP = 0
  1390. AND DI.ITEMTYPE = 1
  1391. AND IP.KILNCODE = 'SK3' THEN
  1392. 3
  1393. WHEN DI.WORKSHOP = 2
  1394. AND DI.ITEMTYPE = 1
  1395. AND IP.KILNCODE = 'TK1' THEN
  1396. 1
  1397. WHEN DI.WORKSHOP = 2
  1398. AND DI.ITEMTYPE = 1
  1399. AND IP.KILNCODE = 'TK2' THEN
  1400. 2
  1401. WHEN DI.WORKSHOP = 2
  1402. AND DI.ITEMTYPE = 2
  1403. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  1404. 2
  1405. WHEN DI.WORKSHOP = 2
  1406. AND DI.ITEMTYPE = 2
  1407. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  1408. 1
  1409. WHEN DI.WORKSHOP = 3 THEN
  1410. 3
  1411. ELSE
  1412. 0
  1413. END WORKSHOP,
  1414. GDD.MATERIALCODE,
  1415. G.GOODSCODE,
  1416. G.GOODSNAME
  1417. FROM TP_PM_INPRODUCTION IP
  1418. INNER JOIN TSAP_HEGII_DATAITEM_SSKC DI
  1419. ON IP.PROCEDUREID = DI.ITEMID
  1420. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1421. ON IP.BARCODE = GDD.BARCODE
  1422. INNER JOIN TP_MST_GOODS G
  1423. ON G.GOODSID = GDD.GOODSID
  1424. INNER JOIN TP_MST_GOODSTYPE GT
  1425. ON GT.GOODSTYPEID = G.GOODSTYPEID
  1426. UNION ALL
  1427. --10-0干补
  1428. SELECT DI.DATACODE,
  1429. CASE
  1430. WHEN DI.WORKSHOP = 0
  1431. AND DI.ITEMTYPE = 1
  1432. AND IP.KILNCODE = 'SK1' THEN
  1433. 1
  1434. WHEN DI.WORKSHOP = 0
  1435. AND DI.ITEMTYPE = 1
  1436. AND IP.KILNCODE = 'SK2' THEN
  1437. 2
  1438. WHEN DI.WORKSHOP = 0
  1439. AND DI.ITEMTYPE = 1
  1440. AND IP.KILNCODE = 'SK3' THEN
  1441. 3
  1442. WHEN DI.WORKSHOP = 2
  1443. AND DI.ITEMTYPE = 1
  1444. AND IP.KILNCODE = 'TK1' THEN
  1445. 1
  1446. WHEN DI.WORKSHOP = 2
  1447. AND DI.ITEMTYPE = 1
  1448. AND IP.KILNCODE = 'TK2' THEN
  1449. 2
  1450. WHEN DI.WORKSHOP = 2
  1451. AND DI.ITEMTYPE = 2
  1452. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  1453. 2
  1454. WHEN DI.WORKSHOP = 2
  1455. AND DI.ITEMTYPE = 2
  1456. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  1457. 1
  1458. WHEN DI.WORKSHOP = 3 THEN
  1459. 3
  1460. ELSE
  1461. 0
  1462. END WORKSHOP,
  1463. GDD.MATERIALCODE,
  1464. G.GOODSCODE,
  1465. G.GOODSNAME
  1466. FROM TP_PM_INPRODUCTION IP
  1467. INNER JOIN TSAP_HEGII_DATAITEM_SSKC DI
  1468. ON IP.FLOWPROCEDUREID = DI.ITEMID
  1469. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1470. ON IP.BARCODE = GDD.BARCODE
  1471. INNER JOIN TP_MST_GOODS G
  1472. ON G.GOODSID = GDD.GOODSID
  1473. INNER JOIN TP_MST_GOODSTYPE GT
  1474. ON GT.GOODSTYPEID = G.GOODSTYPEID
  1475. WHERE PROCEDUREID = 18
  1476. UNION ALL
  1477. --未交坯
  1478. SELECT '20' DATACODE,
  1479. CASE
  1480. WHEN INSTR(GT.GOODSTYPECODE, '001001') = 1
  1481. AND
  1482. (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) THEN
  1483. 2
  1484. WHEN INSTR(GT.GOODSTYPECODE, '001002') = 1
  1485. AND
  1486. (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) THEN
  1487. 1
  1488. WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN
  1489. 3
  1490. ELSE
  1491. 0
  1492. END WORKSHOP,
  1493. GDD.MATERIALCODE,
  1494. G.GOODSCODE,
  1495. G.GOODSNAME
  1496. FROM TP_PM_GROUTINGDAILYDETAIL GDD
  1497. INNER JOIN TP_MST_GOODS G
  1498. ON GDD.GOODSID = G.GOODSID
  1499. INNER JOIN TP_MST_GOODSTYPE GT
  1500. ON GT.GOODSTYPEID = G.GOODSTYPEID
  1501. WHERE GDD.VALUEFLAG = 1
  1502. AND GDD.BARCODE IS NOT NULL
  1503. AND GDD.BEGINNINGFLAG = 0
  1504. AND GDD.DELIVERFLAG = 0
  1505. AND GDD.SCRAPFLAG = 0) semi
  1506. where (:DATACODE is null or :DATACODE ='' or :DATACODE ='-1' or instr(','||:DATACODE||',',','||semi.DATACODE||',')>0)
  1507. and (:WORKSHOP is null or :WORKSHOP = '' or instr(','||:WORKSHOP||',',','||semi.WORKSHOP||',')>0)
  1508. and (:MATERIALCODE is null or :MATERIALCODE = '' or instr(','||:MATERIALCODE||',',','||semi.MATERIALCODE||',')>0)
  1509. GROUP BY DATACODE,
  1510. WORKSHOP,
  1511. MATERIALCODE,
  1512. GOODSCODE,
  1513. GOODSNAME
  1514. ORDER BY DATACODE,
  1515. WORKSHOP,
  1516. MATERIALCODE,
  1517. GOODSCODE,
  1518. GOODSNAME";
  1519. OracleParameter[] oracleParameter = new OracleParameter[]
  1520. {
  1521. new OracleParameter(":WORKSHOP",OracleDbType.Varchar2, cre.Properties["WORKSHOP"], ParameterDirection.Input),
  1522. new OracleParameter(":MATERIALCODE",OracleDbType.Varchar2, cre.Properties["MATERIALCODE"], ParameterDirection.Input),
  1523. new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input),
  1524. };
  1525. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1526. return sre;
  1527. }
  1528. catch (Exception ex)
  1529. {
  1530. throw ex;
  1531. }
  1532. }
  1533. #endregion
  1534. #region 报工移库
  1535. /// <summary>
  1536. /// 报工移库_同步SAP数据(自动)
  1537. /// </summary>
  1538. /// <param name="date"></param>
  1539. public static void BGYKToSAP(DateTime date, DateTime ndate)
  1540. {
  1541. IDBTransaction oracleConn = null;
  1542. ServiceResultEntity sre = new ServiceResultEntity();
  1543. int logid = 0;
  1544. string message = string.Empty;
  1545. string sqlString = string.Empty;
  1546. try
  1547. {
  1548. #region 生成日志
  1549. OracleParameter[] paras = new OracleParameter[]
  1550. {
  1551. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  1552. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  1553. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  1554. };
  1555. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1556. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BGYK", paras);
  1557. int.TryParse(paras[1].Value + "", out logid);
  1558. message = paras[2].Value + "";
  1559. oracleConn.Commit();
  1560. #endregion
  1561. #region 同步SAP
  1562. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1563. //2022年9月8日11:38:51 更改 by fy
  1564. //sqlString = @"
  1565. //SELECT WERKS,
  1566. // MATNR,
  1567. // ZJDNU,
  1568. // ZSCS,
  1569. // ZSCCJ,
  1570. // ZSCMS,
  1571. // CHARG,
  1572. // MENGE,
  1573. // ZMLID
  1574. // FROM TSAP_HEGII_WORKDATA_BGYK
  1575. // WHERE LOGID = :LOGID ";
  1576. sqlString = @"SELECT
  1577. A.WERKS,
  1578. A.MATNR,
  1579. A.ZJDNU,
  1580. -- A.ZSCS,
  1581. 'T' AS ZSCS,
  1582. A.ZSCCJ,
  1583. A.ZSCMS,
  1584. A.CHARG,
  1585. A.MENGE,
  1586. A.ZMLID,
  1587. to_char(B.EXECUTEDATEBEGIN, 'yyyymmddhh24miss') AS ZYWKS,
  1588. to_char(B.EXECUTEDATEEND, 'yyyymmddhh24miss' ) AS ZYWJS,
  1589. to_char(SYSDATE, 'yyyymmdd' ) AS ZBUDAT,
  1590. to_char(SYSDATE, 'yyyymmddhh24miss' ) AS ZMONT,
  1591. '' AS ZTYPE1,
  1592. '' AS ZMSG1
  1593. FROM
  1594. TSAP_HEGII_WORKDATA_BGYK A
  1595. INNER JOIN TSAP_HEGII_DATALOG_BGYK B ON B.LOGID = A.LOGID
  1596. WHERE
  1597. A.LOGID = :LOGID";
  1598. paras = new OracleParameter[]
  1599. {
  1600. new OracleParameter(":LOGID", OracleDbType.Int32, logid, ParameterDirection.Input),
  1601. };
  1602. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  1603. //获取报工SAP接口是否开启
  1604. sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  1605. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  1606. if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "1")
  1607. {
  1608. string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGYKToSAP>.ConvertToModel(workData)) + "}}";
  1609. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  1610. string url034 = ini.ReadIniData("SAP_NEW_INFO", "Url034");
  1611. //url034 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM034";
  1612. string result = PostData(url034, postString, "POST");
  1613. string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  1614. string zmsg = JObject.Parse(result)["ZMSG"].ToString();
  1615. sqlString = "update TSAP_HEGII_DATALOG_BGYK t set t.EndTime = sysdate, ZTYPE = :ZTYPE, ZMSG =:ZMSG where logid = :logid";
  1616. paras = new OracleParameter[]
  1617. {
  1618. new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  1619. new OracleParameter(":ZTYPE", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  1620. new OracleParameter(":ZMSG", OracleDbType.Varchar2, zmsg, ParameterDirection.Input),
  1621. };
  1622. oracleConn.ExecuteNonQuery(sqlString, paras);
  1623. oracleConn.Commit();
  1624. }
  1625. #endregion
  1626. }
  1627. catch (Exception ex)
  1628. {
  1629. OutputLog.TraceLog(LogPriority.Error,
  1630. "BGYKToSAP",
  1631. "报工移库" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  1632. ex.ToString(),
  1633. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  1634. }
  1635. }
  1636. public static void BGYKToSAP_TEST(DateTime date, DateTime ndate)
  1637. {
  1638. IDBTransaction oracleConn = null;
  1639. ServiceResultEntity sre = new ServiceResultEntity();
  1640. int logid = 0;
  1641. string message = string.Empty;
  1642. string sqlString = string.Empty;
  1643. try
  1644. {
  1645. #region 同步SAP
  1646. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1647. //2022年9月8日11:38:51 更改 by fy
  1648. //sqlString = @"
  1649. //SELECT WERKS,
  1650. // MATNR,
  1651. // ZJDNU,
  1652. // ZSCS,
  1653. // ZSCCJ,
  1654. // ZSCMS,
  1655. // CHARG,
  1656. // MENGE,
  1657. // ZMLID
  1658. // FROM TSAP_HEGII_WORKDATA_BGYK
  1659. // WHERE LOGID = :LOGID ";
  1660. sqlString = @"SELECT '5000' WERKS,MATNR,to_char(ZJDNU) ZJDNU,'T' AS ZSCS,to_char(ZSCCJ) ZSCCJ,to_char(ZSCMS) ZSCMS,to_char(CHARG)CHARG,
  1661. to_char(MENGE) MENGE,to_char(ZMLID) ZMLID,
  1662. to_char(:V_DATEBEGIN, 'yyyymmddhh24miss') AS ZYWKS,
  1663. to_char(:IN_DATEEND, 'yyyymmddhh24miss' ) AS ZYWJS,
  1664. to_char(SYSDATE, 'yyyymmdd' ) AS ZBUDAT,
  1665. to_char(SYSDATE, 'yyyymmddhh24miss' ) AS ZMONT FROM (
  1666. SELECT
  1667. T.MATNR,
  1668. '30' AS ZJDNU,
  1669. G.GOODS_LINE_CODE AS ZSCS,
  1670. '2' AS ZSCCJ,
  1671. T.ZSCMS,
  1672. TO_CHAR( SYSDATE, 'yyyymm' ) AS CHARG,
  1673. SUM( T.MENGE ) AS MENGE,
  1674. '3' AS ZMLID
  1675. FROM
  1676. (-- 3-3线上施釉(3)到3#刮登(99)
  1677. SELECT
  1678. GDD.GOODSID,
  1679. GDD.MATERIALCODE AS MATNR,
  1680. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  1681. COUNT( 1 ) AS MENGE
  1682. FROM
  1683. TP_PM_PRODUCTIONDATA PD1
  1684. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  1685. WHERE
  1686. PD1.CREATETIME >= :V_DATEBEGIN
  1687. AND PD1.CREATETIME < :IN_DATEEND
  1688. AND PD1.PROCEDUREID = 99
  1689. AND PD1.VALUEFLAG = '1'
  1690. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 3 )
  1691. GROUP BY
  1692. GDD.GOODSID,
  1693. GDD.MATERIALCODE,
  1694. GDD.TESTMOULDFLAG UNION ALL-- 3-3线上施釉(3)到3#刮登(99)撤销了的
  1695. SELECT
  1696. GDD.GOODSID,
  1697. GDD.MATERIALCODE AS MATNR,
  1698. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  1699. - COUNT( 1 ) AS MENGE
  1700. FROM
  1701. TP_PM_PRODUCTIONDATA PD1
  1702. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  1703. WHERE
  1704. PD1.BACKOUTTIME >= :V_DATEBEGIN
  1705. AND PD1.BACKOUTTIME < :IN_DATEEND
  1706. AND PD1.PROCEDUREID = 99
  1707. AND PD1.VALUEFLAG = '0'
  1708. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 3 )
  1709. GROUP BY
  1710. GDD.GOODSID,
  1711. GDD.MATERIALCODE,
  1712. GDD.TESTMOULDFLAG
  1713. ) T
  1714. LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
  1715. GROUP BY
  1716. T.MATNR,
  1717. T.ZSCMS,
  1718. G.GOODS_LINE_CODE UNION ALL
  1719. SELECT
  1720. T.MATNR,
  1721. '40' AS ZJDNU,
  1722. G.GOODS_LINE_CODE AS ZSCS,
  1723. '2' AS ZSCCJ,
  1724. T.ZSCMS,
  1725. TO_CHAR( SYSDATE, 'yyyymm' ) AS CHARG,
  1726. SUM( T.MENGE ) AS MENGE,
  1727. '3' AS ZMLID
  1728. FROM
  1729. (-- 3#卸窑(103)到7-1成检出窑交接(11)
  1730. SELECT
  1731. GDD.GOODSID,
  1732. GDD.MATERIALCODE AS MATNR,
  1733. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  1734. COUNT( 1 ) AS MENGE
  1735. FROM
  1736. TP_PM_PRODUCTIONDATA PD1
  1737. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  1738. WHERE
  1739. PD1.CREATETIME >= :V_DATEBEGIN
  1740. AND PD1.CREATETIME < :IN_DATEEND
  1741. AND PD1.PROCEDUREID = 11
  1742. AND PD1.VALUEFLAG = '1'
  1743. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 103 )
  1744. GROUP BY
  1745. GDD.GOODSID,
  1746. GDD.MATERIALCODE,
  1747. GDD.TESTMOULDFLAG UNION ALL-- 3-3线上施釉(3)到3#刮登(99)撤销了的
  1748. SELECT
  1749. GDD.GOODSID,
  1750. GDD.MATERIALCODE AS MATNR,
  1751. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  1752. - COUNT( 1 ) AS MENGE
  1753. FROM
  1754. TP_PM_PRODUCTIONDATA PD1
  1755. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  1756. WHERE
  1757. PD1.BACKOUTTIME >= :V_DATEBEGIN
  1758. AND PD1.BACKOUTTIME < :IN_DATEEND
  1759. AND PD1.PROCEDUREID = 11
  1760. AND PD1.VALUEFLAG = '0'
  1761. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 103 )
  1762. GROUP BY
  1763. GDD.GOODSID,
  1764. GDD.MATERIALCODE,
  1765. GDD.TESTMOULDFLAG
  1766. ) T
  1767. LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
  1768. GROUP BY
  1769. T.MATNR,
  1770. T.ZSCMS,
  1771. G.GOODS_LINE_CODE UNION ALL
  1772. SELECT
  1773. T.MATNR,
  1774. '40' AS ZJDNU,
  1775. G.GOODS_LINE_CODE AS ZSCS,
  1776. '3' AS ZSCCJ,
  1777. T.ZSCMS,
  1778. TO_CHAR( SYSDATE, 'yyyymm' ) AS CHARG,
  1779. SUM( T.MENGE ) AS MENGE,
  1780. '2' AS ZMLID
  1781. FROM
  1782. (-- 6-1卸窑(10)到3#成检交接(104)
  1783. SELECT
  1784. GDD.GOODSID,
  1785. GDD.MATERIALCODE AS MATNR,
  1786. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  1787. COUNT( 1 ) AS MENGE
  1788. FROM
  1789. TP_PM_PRODUCTIONDATA PD1
  1790. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  1791. WHERE
  1792. PD1.CREATETIME >= :V_DATEBEGIN
  1793. AND PD1.CREATETIME < :IN_DATEEND
  1794. AND PD1.PROCEDUREID = 104
  1795. AND PD1.VALUEFLAG = '1'
  1796. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 10 )
  1797. GROUP BY
  1798. GDD.GOODSID,
  1799. GDD.MATERIALCODE,
  1800. GDD.TESTMOULDFLAG UNION ALL-- 6-1卸窑(10)到3#成检交接(104)撤销了的
  1801. SELECT
  1802. GDD.GOODSID,
  1803. GDD.MATERIALCODE AS MATNR,
  1804. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  1805. - COUNT( 1 ) AS MENGE
  1806. FROM
  1807. TP_PM_PRODUCTIONDATA PD1
  1808. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  1809. WHERE
  1810. PD1.BACKOUTTIME >= :V_DATEBEGIN
  1811. AND PD1.BACKOUTTIME < :IN_DATEEND
  1812. AND PD1.PROCEDUREID = 104
  1813. AND PD1.VALUEFLAG = '0'
  1814. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 10 )
  1815. GROUP BY
  1816. GDD.GOODSID,
  1817. GDD.MATERIALCODE,
  1818. GDD.TESTMOULDFLAG
  1819. ) T
  1820. LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
  1821. GROUP BY
  1822. T.MATNR,
  1823. T.ZSCMS,
  1824. G.GOODS_LINE_CODE
  1825. ) WHERE MENGE > 0";
  1826. OracleParameter[] paras = new OracleParameter[]
  1827. {
  1828. new OracleParameter(":V_DATEBEGIN",OracleDbType.Date, date, ParameterDirection.Input),
  1829. new OracleParameter(":IN_DATEEND",OracleDbType.Date, ndate, ParameterDirection.Input),
  1830. };
  1831. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  1832. //获取报工SAP接口是否开启
  1833. sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  1834. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  1835. if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "0")
  1836. {
  1837. string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGYKToSAP>.ConvertToModel(workData)) + "}}";
  1838. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  1839. //string url034 = ini.ReadIniData("SAP_NEW_INFO", "Url034");
  1840. string url034 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM034";
  1841. string result = PostData(url034, postString, "POST");
  1842. string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  1843. string zmsg = JObject.Parse(result)["ZMSG"].ToString();
  1844. //sqlString = "update TSAP_HEGII_DATALOG_BGYK t set t.EndTime = sysdate, ZTYPE = :ZTYPE, ZMSG =:ZMSG where logid = :logid";
  1845. //paras = new OracleParameter[]
  1846. //{
  1847. // new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  1848. // new OracleParameter(":ZTYPE", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  1849. // new OracleParameter(":ZMSG", OracleDbType.Varchar2, zmsg, ParameterDirection.Input),
  1850. //};
  1851. //oracleConn.ExecuteNonQuery(sqlString, paras);
  1852. oracleConn.Commit();
  1853. }
  1854. #endregion
  1855. }
  1856. catch (Exception ex)
  1857. {
  1858. OutputLog.TraceLog(LogPriority.Error,
  1859. "BGYKToSAP",
  1860. "报工移库" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  1861. ex.ToString(),
  1862. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  1863. }
  1864. }
  1865. /// <summary>
  1866. /// 查询同步日志
  1867. /// </summary>
  1868. /// <param name="cre"></param>
  1869. /// <param name="userInfo"></param>
  1870. /// <returns></returns>
  1871. public static ServiceResultEntity GetDataLog_BGYK(ClientRequestEntity cre)
  1872. {
  1873. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1874. ServiceResultEntity sre = new ServiceResultEntity();
  1875. try
  1876. {
  1877. string sqlString = @"
  1878. SELECT DL.LOGID,
  1879. DL.BEGINTIME,
  1880. DL.ENDTIME,
  1881. DL.YYYYMMDD,
  1882. DL.ZTYPE,
  1883. DL.ZMSG,
  1884. U.USERCODE SYNUSERCODE
  1885. FROM TSAP_HEGII_DATALOG_BGYK DL
  1886. LEFT JOIN TP_MST_USER U
  1887. ON U.USERID = DL.CREATEUSERID
  1888. WHERE DL.EXECUTEDATEBEGIN >= :DATEBEGIN
  1889. AND DL.EXECUTEDATEEND <= :DATEEND ";
  1890. OracleParameter[] oracleParameter = new OracleParameter[]
  1891. {
  1892. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  1893. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  1894. };
  1895. sqlString += "ORDER BY dl.logid DESC\n";
  1896. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1897. return sre;
  1898. }
  1899. catch (Exception ex)
  1900. {
  1901. throw ex;
  1902. }
  1903. }
  1904. /// <summary>
  1905. /// 查询同步明细
  1906. /// </summary>
  1907. /// <param name="logid"></param>
  1908. /// <param name="userInfo"></param>
  1909. /// <returns></returns>
  1910. public static ServiceResultEntity GetWorkData_BGYK(ClientRequestEntity cre)
  1911. {
  1912. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1913. ServiceResultEntity sre = new ServiceResultEntity();
  1914. try
  1915. {
  1916. //add xiacm 2022-10-21
  1917. int logid = Convert.ToInt32(cre.Request);
  1918. string sqlString = @"
  1919. SELECT WERKS,
  1920. MATNR,
  1921. ZJDNU,
  1922. ZSCS,
  1923. ZSCCJ,
  1924. ZSCMS,
  1925. CHARG,
  1926. MENGE,
  1927. ZMLID
  1928. FROM TSAP_HEGII_WORKDATA_BGYK WD ";
  1929. if (logid > 0)
  1930. {
  1931. sqlString += "WHERE WD.LOGID = :LOGID ";
  1932. }
  1933. else
  1934. {
  1935. sqlString += @" INNER JOIN TSAP_HEGII_DATALOG_BGYK DL
  1936. ON WD.LOGID = DL.LOGID
  1937. WHERE DL.EXECUTEDATEBEGIN >= :DATEBEGIN
  1938. AND DL.EXECUTEDATEEND <= :DATEEND ";
  1939. }
  1940. OracleParameter[] oracleParameter = new OracleParameter[]
  1941. {
  1942. new OracleParameter(":LOGID",OracleDbType.Int32, logid, ParameterDirection.Input),
  1943. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  1944. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  1945. };
  1946. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1947. return sre;
  1948. }
  1949. catch (Exception ex)
  1950. {
  1951. throw ex;
  1952. }
  1953. }
  1954. #endregion
  1955. #region PostData 请求
  1956. public static string PostData(string url, string data, string method)
  1957. {
  1958. //将单引号转义成双引号
  1959. data = data.Replace("'", "\"");
  1960. //创建Web访问对象
  1961. HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
  1962. //把用户传过来的数据转成“UTF-8”的字节流
  1963. byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
  1964. myRequest.Method = method;
  1965. myRequest.ContentLength = buf.Length;
  1966. myRequest.ContentType = "application/json;charset=UTF-8";
  1967. //myRequest.MaximumAutomaticRedirections = 1;
  1968. myRequest.AllowAutoRedirect = true;
  1969. //UTF8标准转码加密
  1970. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  1971. // 配置文件
  1972. string userName = ini.ReadIniData("SAP_NEW_INFO", "userName");
  1973. // 测试
  1974. //string userName = "hgsapdk:Sapdk#240";
  1975. // 正式
  1976. //string userName = "PODKMES:Sapdk#800";
  1977. string base64Header = Convert.ToBase64String(Encoding.UTF8.GetBytes(userName));
  1978. myRequest.Headers.Add("Authorization", "Basic " + base64Header);
  1979. //发送请求
  1980. Stream stream = myRequest.GetRequestStream();
  1981. stream.Write(buf, 0, buf.Length);
  1982. stream.Close();
  1983. //获取接口返回值
  1984. //通过Web访问对象获取响应内容
  1985. HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
  1986. //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
  1987. StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
  1988. //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
  1989. string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
  1990. reader.Close();
  1991. myResponse.Close();
  1992. // 结果
  1993. OutputLog.TraceLog(LogPriority.Information,
  1994. "报工030", method, data,
  1995. LocalPath.LogExePath + "SAP_HEGII\\Info_030");
  1996. return returnXml;
  1997. }
  1998. #endregion
  1999. #region 转换
  2000. public class ModelConvertHelper<T> where T : new()
  2001. {
  2002. public static List<T> ConvertToModel(DataTable dt)
  2003. {
  2004. // 定义集合
  2005. List<T> ts = new List<T>();
  2006. // 获得此模型的类型
  2007. Type type = typeof(T);
  2008. string tempName = "";
  2009. foreach (DataRow dr in dt.Rows)
  2010. {
  2011. T t = new T();
  2012. // 获得此模型的公共属性
  2013. PropertyInfo[] propertys = t.GetType().GetProperties();
  2014. foreach (PropertyInfo pi in propertys)
  2015. {
  2016. tempName = pi.Name;
  2017. // 检查DataTable是否包含此列
  2018. if (dt.Columns.Contains(tempName))
  2019. {
  2020. // 判断此属性是否有Setter
  2021. if (!pi.CanWrite) continue;
  2022. object value = dr[tempName];
  2023. if (value != DBNull.Value)
  2024. pi.SetValue(t, value, null);
  2025. }
  2026. }
  2027. ts.Add(t);
  2028. }
  2029. return ts;
  2030. }
  2031. }
  2032. #endregion
  2033. }
  2034. }