SAPDataLogicPartial.cs 105 KB

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