UIF023010.pck 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725
  1. CREATE OR REPLACE PACKAGE UIF023010 IS
  2. -- Author : SJW
  3. -- Created : 2008-11-21 19:42:17
  4. --update time : 2009-03-07 08:30:40
  5. -- Purpose :
  6. PROCEDURE INSSCH_MILL_D;
  7. PROCEDURE CLEAR;
  8. PROCEDURE ADJUSTROLLSLABSEQBYWTHDESC;
  9. PROCEDURE I_SCH_MILL(P_SLAB_NO TBG02_SLAB_COMM.SLAB_NO%TYPE);
  10. PROCEDURE I_TBF02_SCH_ROLL;
  11. PROCEDURE REP_UPSLAB(P_SLAB_NO TBF02_SCH_MILL.SLAB_NO%TYPE,
  12. P_REG_ID VARCHAR);
  13. /* PROCEDURE SLAB_REP (
  14. P_MAT_NO IN VARCHAR
  15. ,P_ORD_NO IN TBE02_ORD_PRC.ORD_NO%TYPE
  16. ,P_ORD_SEQ IN TBE02_ORD_PRC.ORD_SEQ%TYPE
  17. ,P_REG_ID IN VARCHAR
  18. );*/
  19. PROCEDURE SLAB_REP_EACHOTHER(P_SLAB_NO_DOWN TBG02_SLAB_COMM.SLAB_NO%TYPE,
  20. P_SLAB_NO_UP TBG02_SLAB_COMM.SLAB_NO%TYPE,
  21. P_REG_ID VARCHAR);
  22. PROCEDURE SLAB_ORD_REP(P_REG_ID VARCHAR, P_RTN_MSG OUT VARCHAR);
  23. PROCEDURE REP_UP_SLAB_INFOS;
  24. END UIF023010;
  25. /
  26. CREATE OR REPLACE PACKAGE BODY UIF023010 IS
  27. /************************************************************************/
  28. /* PACKAGE UIF023010 Author: SunJiawang */
  29. /************************************************************************/
  30. /* DESCRIPTION 编制CCR */
  31. /************************************************************************/
  32. /* UPD_TIME | WHO | PROGRAM | CONTTENT
  33. /* 09-08-10 SUNJIAWANG 增加 SLAB_ORD_REP /*
  34. /* 09-08-10 SUNJIAWANG SLAB_ORD_REP 增加对Z33跺位的排除 /*
  35. /************************************************************************/
  36. CURSOR CURSLABCOMMD IS
  37. SELECT B.SLAB_EDT_SEQ,
  38. A.SLAB_CUT_SEQ,
  39. A.ORD_THK,
  40. A.ORD_WTH,
  41. A.ORD_LEN,
  42. A.ORD_WGT,
  43. C.ORD_UNIT_WGT_MIN,
  44. C.ORD_UNIT_WGT_MAX,
  45. A.COIL_INDIA,
  46. A.COIL_OUTDIA,
  47. A.ORD_NO,
  48. A.ORD_SEQ,
  49. A.ORD_FL
  50. FROM TBG02_SLAB_COMM_D A,
  51. (SELECT T.SLAB_NO, T.SLAB_EDT_SEQ
  52. FROM TBF02_SCH_MILL T
  53. WHERE T.SLAB_EDT_SEQ IN
  54. (SELECT T.SLAB_EDT_SEQ
  55. FROM TBF02_SCH_MILL T
  56. WHERE T.SLAB_EDT_SEQ NOT IN
  57. (SELECT SLAB_EDT_SEQ FROM TBF02_SCH_MILL_D))) B,
  58. TBE02_ORD_PRC C
  59. WHERE A.SLAB_NO = B.SLAB_NO
  60. AND A.ORD_NO = C.ORD_NO
  61. AND A.ORD_SEQ = C.ORD_SEQ
  62. ORDER BY B.SLAB_EDT_SEQ ASC;
  63. TYPE REC_SLABCOMMD_TYPE IS RECORD(
  64. P_SLAB_EDT_SEQ TBF02_SCH_MILL.SLAB_EDT_SEQ %TYPE, /*炉次编制号*/
  65. P_SLAB_CUT_SEQ TBG02_SLAB_COMM_D.SLAB_CUT_SEQ %TYPE, /*炉次内顺序*/
  66. P_ORD_THK TBG02_SLAB_COMM_D.ORD_THK %TYPE,
  67. P_ORD_WTH TBG02_SLAB_COMM_D.ORD_WTH %TYPE,
  68. P_ORD_LEN TBG02_SLAB_COMM_D.ORD_LEN %TYPE,
  69. P_ORD_WGT TBG02_SLAB_COMM_D.ORD_WGT %TYPE,
  70. P_ORD_WGT_MIN TBE02_ORD_PRC.ORD_UNIT_WGT_MIN %TYPE,
  71. P_ORD_WGT_MAX TBE02_ORD_PRC.ORD_UNIT_WGT_MAX %TYPE,
  72. P_ORD_INDIA TBG02_SLAB_COMM_D.COIL_INDIA %TYPE,
  73. P_ORD_OUTDIA TBG02_SLAB_COMM_D.COIL_OUTDIA %TYPE,
  74. P_ORD_NO TBG02_SLAB_COMM_D.ORD_NO %TYPE,
  75. P_ORD_SEQ TBG02_SLAB_COMM_D.ORD_SEQ %TYPE,
  76. P_ORD_FL TBG02_SLAB_COMM_D.ORD_FL %TYPE);
  77. REC_SLABCOMMD REC_SLABCOMMD_TYPE;
  78. PROCEDURE INSSCH_MILL_D IS
  79. BEGIN
  80. OPEN CURSLABCOMMD;
  81. LOOP
  82. FETCH CURSLABCOMMD
  83. INTO REC_SLABCOMMD;
  84. EXIT WHEN CURSLABCOMMD %NOTFOUND;
  85. INSERT INTO TBF02_SCH_MILL_D
  86. (SLAB_EDT_SEQ,
  87. COIL_CUT_SEQ,
  88. ORD_THK,
  89. ORD_WTH,
  90. ORD_LEN,
  91. ORD_WGT,
  92. ORD_WGT_MIN,
  93. ORD_WGT_MAX,
  94. ORD_INDIA,
  95. ORD_OUTDIA,
  96. ORD_NO,
  97. ORD_SEQ,
  98. ORD_FL)
  99. VALUES
  100. (REC_SLABCOMMD.P_SLAB_EDT_SEQ,
  101. REC_SLABCOMMD.P_SLAB_CUT_SEQ,
  102. REC_SLABCOMMD.P_ORD_THK,
  103. REC_SLABCOMMD.P_ORD_WTH,
  104. REC_SLABCOMMD.P_ORD_LEN,
  105. REC_SLABCOMMD.P_ORD_WGT,
  106. REC_SLABCOMMD.P_ORD_WGT_MIN,
  107. REC_SLABCOMMD.P_ORD_WGT_MAX,
  108. REC_SLABCOMMD.P_ORD_INDIA,
  109. REC_SLABCOMMD.P_ORD_OUTDIA,
  110. REC_SLABCOMMD.P_ORD_NO,
  111. REC_SLABCOMMD.P_ORD_SEQ,
  112. REC_SLABCOMMD.P_ORD_FL);
  113. END LOOP;
  114. CLOSE CURSLABCOMMD;
  115. END;
  116. --由宽到窄调整轧辊里顺序
  117. PROCEDURE ADJUSTROLLSLABSEQBYWTHDESC IS
  118. CURSOR CURSCHMILL IS
  119. SELECT ROWNUM, A.SLAB_EDT_SEQ, A.ROLL_SLAB_SEQ
  120. FROM (SELECT T.ROWID, ROWNUM, T.SLAB_EDT_SEQ, T.ROLL_SLAB_SEQ
  121. FROM TBF02_SCH_MILL T,
  122. TBB01_ORD_PROD C,
  123. TBE02_ORD_PRC E
  124. WHERE T.ORD_NO = C.ORD_NO(+)
  125. AND T.ORD_SEQ = C.ORD_SEQ(+)
  126. AND E.ORD_NO = T.ORD_NO
  127. AND E.ORD_SEQ = T.ORD_SEQ
  128. ORDER BY C.WTH_AIM DESC,
  129. C.HOT_THK_AIM DESC,
  130. E.DEL_TO_DATE ASC,
  131. NVL(E.EMGMTR_NMG_CLF, 'N') DESC,
  132. T.CUR_LOAD_LOC DESC) A;
  133. TYPE SCHMILLTYPE IS RECORD(
  134. P_ROWNUM NUMBER,
  135. P_SLAB_EDT_SEQ TBF02_SCH_MILL.SLAB_EDT_SEQ %TYPE,
  136. P_ROLL_SLAB_SEQ TBF02_SCH_MILL.ROLL_SLAB_SEQ %TYPE);
  137. REC_SCH_MILL SCHMILLTYPE;
  138. BEGIN
  139. OPEN CURSCHMILL;
  140. LOOP
  141. EXIT WHEN CURSCHMILL %NOTFOUND;
  142. FETCH CURSCHMILL
  143. INTO REC_SCH_MILL;
  144. UPDATE TBF02_SCH_MILL
  145. SET ROLL_SLAB_SEQ = REC_SCH_MILL.P_ROWNUM
  146. WHERE SLAB_EDT_SEQ = REC_SCH_MILL.P_SLAB_EDT_SEQ;
  147. END LOOP;
  148. CLOSE CURSCHMILL;
  149. END;
  150. PROCEDURE CLEAR IS
  151. BEGIN
  152. DELETE FROM TBF02_SCH_MILL T WHERE T.SLAB_EDT_SEQ > 0;
  153. DELETE FROM TBF02_SCH_MILL_D T WHERE T.SLAB_EDT_SEQ > 0;
  154. DELETE FROM TBF02_SCH_ROLL A WHERE A.ROLL_NO = 'A0001';
  155. COMMIT;
  156. END;
  157. PROCEDURE I_SCH_MILL(P_SLAB_NO TBG02_SLAB_COMM.SLAB_NO%TYPE) IS
  158. BEGIN
  159. INSERT INTO TBF02_SCH_MILL M
  160. SELECT (SELECT NVL(MAX(SLAB_EDT_SEQ), 0) + 1 FROM TBF02_SCH_MILL) SLAB_EDT_SEQ -- 板坯编制号
  161. ,
  162. A.SLAB_NO -- 板坯号
  163. ,
  164. '' -- 钢卷号
  165. ,
  166. 'A0001' -- 轧辊号
  167. ,
  168. (SELECT NVL(MAX(ROLL_SLAB_SEQ), 0) + 1
  169. FROM TBF02_SCH_MILL) ROLL_SLAB_SEQ -- 轧辊内顺序
  170. ,
  171. '' -- LOT号
  172. ,
  173. 0 -- LOT内钢卷个数
  174. ,
  175. 0 -- LOT内钢卷编号
  176. -- A.PRODNM_CD -- 产品代码
  177. ----------------------------------------------------------------------------------------------------
  178. ,
  179. H.PRDNM_CD PRODNM_CD -- 产品代码
  180. --modify by sjw
  181. --desc: 扎制计划应该传送扎制模式 而不是产品代码(梅贵平要求)
  182. --------------------------------------------------------------------------------------------------
  183. ,
  184. A.STL_GRD -- 钢号
  185. ,
  186. D.FAC_STL_GRP -- 钢号组
  187. ,
  188. A.SLAB_THK -- 板坯厚度
  189. ,
  190. A.SLAB_WTH -- 板坯宽度
  191. ,
  192. A.SLAB_LEN -- 板坯长度
  193. ,
  194. A.SLAB_WGT -- 板坯重量
  195. ,
  196. '0' SLAB_TAPER -- 调宽有无代码
  197. ,
  198. A.SLAB_WTH SLAB_WTH_HEAD -- 板坯HEAD 宽度
  199. ,
  200. A.SLAB_WTH SLAB_WTH_TAIL -- 板坯TAIL 宽度
  201. ,
  202. 0 -- 宽度变更开始位置
  203. ,
  204. 0 -- 宽度变更部分长度
  205. ,
  206. C.THK_AIM -- 厚度目标
  207. ,
  208. (SELECT T.THK_GRP_CD
  209. FROM TBF02_ROLL_THK_GRP T -- 厚度组代码
  210. WHERE T.PLT = 'H'
  211. AND A.INSTR_COIL_THK >= T.MINI
  212. AND A.INSTR_COIL_THK < T.MAXI) THK_GRP_CD,
  213. C.HOT_THK_AIM -- 热厚度AIM
  214. ,
  215. C.HOT_THK_MIN -- 热厚度MIN
  216. ,
  217. C.HOT_THK_MAX -- 热厚度MAX
  218. ,
  219. C.WTH_AIM -- 宽度AlM
  220. ,
  221. C.WTH_MIN -- 宽度MIN
  222. ,
  223. C.WTH_MAX -- 宽度MAX
  224. ,
  225. (SELECT T.WTH_GRP_CD
  226. FROM TBF02_ROLL_WTH_GRP T -- 宽度组代码
  227. WHERE T.PLT = 'H'
  228. AND A.INSTR_COIL_WTH >= T.MINI
  229. AND A.INSTR_COIL_WTH < T.MAXI) WTH_GRP_CD,
  230. B.ORD_LEN,
  231. B.ORD_WGT,
  232. 'C' -- 热送代号
  233. ,
  234. A.ORD_NO -- 合同号
  235. ,
  236. A.ORD_SEQ -- 订单号
  237. ,
  238. E.ORD_USEAGE_CD -- 订单用途代码
  239. ,
  240. A.SPEC_ABBSYM -- 标准号
  241. ,
  242. E.ORDCUST_CD -- 客户代码
  243. ,
  244. E.CUST_CD -- 客户代码
  245. ,
  246. E.DEST_CD -- 目的地代码
  247. ,
  248. E.DEL_TO_DATE -- 交货期
  249. ,
  250. E.UST_CD -- UST区分
  251. ,
  252. 'H' -- 去向
  253. ,
  254. A.INSTR_COIL_THK -- 订单厚度
  255. ,
  256. A.INSTR_COIL_WTH -- 订单宽度
  257. ,
  258. A.INSTR_COIL_WGT -- 订单重量
  259. ,
  260. E.ORD_UNIT_WGT_MIN -- 订单单重下限
  261. ,
  262. E.ORD_UNIT_WGT_MAX -- 订单单重上限
  263. ,
  264. A.INSTR_COIL_INDIA -- 订单内径
  265. ,
  266. A.INSTR_COIL_OUTDIA -- 订单外径
  267. ,
  268. E.PACK_METHOD -- 包装方法
  269. ,
  270. '' -- 轧制工艺流程
  271. ,
  272. E.SPM_PROC_YN -- 平整分卷指定判断
  273. ,
  274. B.COIL_CUT_CNT -- 刚卷分割数
  275. ,
  276. '' -- 目标加热温度
  277. ,
  278. '' -- 目标出炉温度-------------------------------------------------------------------------------------------------------------------
  279. ,
  280. (SELECT NVL(F.FUR_TME, 0)
  281. FROM TBF02_FUR_TIME F
  282. WHERE F.PLT = 'H'
  283. AND F.FUR_LINE = 1
  284. AND F.STL_GRD = A.STL_GRD
  285. AND F.SLAB_THK_MIN <= A.SLAB_THK
  286. AND F.SLAB_THK_MAX > A.SLAB_THK
  287. AND F.HCR_CLF = 'C') FUR_TME,
  288. '' -- 轧制时间
  289. ,
  290. A.CUR_LOAD_LOC -- 堆置位置
  291. ,
  292. '' -- 计划加热炉装炉日期
  293. ,
  294. '' -- 计划轧制时间
  295. ,
  296. '' -- 错误
  297. ,
  298. 'A' -- 状态区分
  299. ,
  300. '' -- 标识
  301. ,
  302. '' --SLAB_NO_DOWN_LOCK
  303. ,
  304. '' --LOAD_LOC_DOWN_LOCK
  305. ,
  306. '' --YARD_LOCK_YN
  307. FROM TBG02_SLAB_COMM A,
  308. TBD00_STLGRD D,
  309. TBB01_ORD_HEAD H,
  310. TBE02_ORD_PRC E,
  311. (SELECT SLAB_NO,
  312. COUNT(SLAB_CUT_SEQ) COIL_CUT_CNT,
  313. SUM(ORD_LEN) ORD_LEN,
  314. SUM(ORD_WGT) ORD_WGT
  315. FROM TBG02_SLAB_COMM_D
  316. GROUP BY SLAB_NO) B,
  317. TBB01_ORD_PROD C
  318. WHERE A.SLAB_NO = B.SLAB_NO
  319. AND A.SLAB_NO = P_SLAB_NO
  320. AND A.SLAB_NO NOT IN (SELECT SLAB_NO FROM TBF02_SCH_MILL)
  321. AND A.STL_GRD = D.FAC_STL_GRD(+)
  322. AND A.ORD_NO = C.ORD_NO(+)
  323. AND A.ORD_SEQ = C.ORD_SEQ(+)
  324. AND A.ORD_NO = H.ORD_NO(+)
  325. AND A.ORD_SEQ = H.ORD_SEQ(+)
  326. AND E.ORD_NO = A.ORD_NO
  327. AND E.ORD_SEQ = A.ORD_SEQ
  328. AND A.SLAB_RT IN ('H', 'C')
  329. AND A.CUR_PROG_CD = 'RBA'
  330. AND A.SLAB_STAT = '2'
  331. AND A.ORD_FL = '1';
  332. END;
  333. PROCEDURE I_TBF02_SCH_ROLL IS
  334. BEGIN
  335. INSERT INTO TBF02_SCH_ROLL
  336. SELECT A.ROLL_NO, --轧辊号
  337. A.WTH_GRP_CD, --宽度组代码
  338. C.MINI, --宽度组下限
  339. C.MAXI, --宽度组上限
  340. '', --钢号组
  341. COUNT(A.SLAB_EDT_SEQ), --板坯编制数
  342. SUM(A.SLAB_WGT), --板坯编制重量
  343. SUM(B.ORD_LEN), --轧钢总长度
  344. '0', --平整分卷数
  345. TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS'), --CCR轧辊编制时间
  346. ''
  347. FROM TBF02_SCH_MILL A,
  348. (SELECT SLAB_NO, SUM(ORD_LEN) ORD_LEN
  349. FROM TBG02_SLAB_COMM_D
  350. GROUP BY SLAB_NO) B,
  351. TBF02_ROLL_WTH_GRP C
  352. WHERE A.SLAB_NO = B.SLAB_NO
  353. AND A.WTH_GRP_CD = C.WTH_GRP_CD
  354. GROUP BY (A.ROLL_NO, A.WTH_GRP_CD, C.MINI, C.MAXI)
  355. ORDER BY WTH_GRP_CD DESC;
  356. END;
  357. /************************************************************************/
  358. /* procedure SLAB_ORD_REP Author: SunJiawang */
  359. /************************************************************************/
  360. /* DESCRIPTION 将下面的跺位替换为上面的板坯 ,并对订单信息呼唤 */
  361. /************************************************************************/
  362. /* IN P_REG_ID 登陆用户
  363. /* OUT P_RTN_MSG 返回错误信息
  364. /************************************************************************/
  365. PROCEDURE SLAB_ORD_REP(P_REG_ID VARCHAR, P_RTN_MSG OUT VARCHAR) IS
  366. VE_NULL EXCEPTION;
  367. CURSOR CUR_SCH_MILL IS
  368. SELECT SLAB_NO
  369. FROM TBF02_SCH_MILL
  370. WHERE CUR_LOAD_LOC NOT LIKE 'Z33%' --Z33 的可以随便堆放不同规格的板坯,因此不在替换范围
  371. ORDER BY ROLL_SLAB_SEQ ASC;
  372. REC_SCH_MILL CUR_SCH_MILL%ROWTYPE;
  373. BEGIN
  374. COMM.INIT_RTN_MSG;
  375. UIF023020_TEST.CLEAR_YARD_LOCK_FLAG;
  376. OPEN CUR_SCH_MILL;
  377. LOOP
  378. FETCH CUR_SCH_MILL
  379. INTO REC_SCH_MILL;
  380. EXIT WHEN CUR_SCH_MILL%NOTFOUND;
  381. IF CUR_SCH_MILL%ROWCOUNT = 0 THEN
  382. RAISE VE_NULL;
  383. END IF;
  384. REP_UPSLAB(REC_SCH_MILL.SLAB_NO, P_REG_ID);
  385. END LOOP;
  386. CLOSE CUR_SCH_MILL;
  387. --将未被锁定的板坯锁定自己本身
  388. UPDATE TBF02_SCH_MILL A
  389. SET A.SLAB_NO_DOWN_LOCK = SLAB_NO,
  390. A.LOAD_LOC_DOWN_LOCK = CUR_LOAD_LOC
  391. WHERE NVL(A.YARD_LOCK_YN, 'N') <> 'Y';
  392. --将计划板坯的信息更换为替换板坯的信息
  393. REP_UP_SLAB_INFOS;
  394. EXCEPTION
  395. WHEN VE_NULL THEN
  396. COMM.REC_ERR.P_TABLE := 'TBF02_SCH_MILL';
  397. COMM.REC_ERR.P_ERR_PARAM1 := 'SLAB_NO';
  398. COMM.REC_ERR.P_ERR_MSG := '没有记录';
  399. COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG, FALSE);
  400. WHEN COMM.PE THEN
  401. P_RTN_MSG := COMM.REC_ERR.P_RTN_MSG;
  402. WHEN OTHERS THEN
  403. COMM.CALL_OTHER_EXCEPTION_DO(P_RTN_MSG);
  404. END;
  405. /************************************************************************/
  406. /* procedure REP_UPSLAB Author: SunJiawang */
  407. /************************************************************************/
  408. /* DESCRIPTION 订单信息互换 */
  409. /************************************************************************/
  410. /* create 090810
  411. /* IN P_REG_ID 登陆用户
  412. /* OUT P_RTN_MSG 返回错误信息
  413. /************************************************************************/
  414. PROCEDURE REP_UPSLAB(P_SLAB_NO TBF02_SCH_MILL.SLAB_NO%TYPE,
  415. P_REG_ID VARCHAR) IS
  416. LV_CUR_LOAD_LOC TBF02_SCH_MILL.CUR_LOAD_LOC%TYPE; --当前位置
  417. LV_UP_CUR_LOAD_LOC TBF02_SCH_MILL.CUR_LOAD_LOC%TYPE; --当前位置最上层没有被锁定的位置
  418. LV_UP_SLAB_NO TBF02_SCH_MILL.SLAB_NO%TYPE; --当前位置最上层没有被锁定的位置
  419. BEGIN
  420. SELECT CUR_LOAD_LOC
  421. INTO LV_CUR_LOAD_LOC
  422. FROM TBG02_SLAB_COMM
  423. WHERE SLAB_NO = P_SLAB_NO;
  424. SELECT NVL(MAX(B.CUR_LOAD_LOC), 'NULL')
  425. INTO LV_UP_CUR_LOAD_LOC
  426. FROM TBG02_SLAB_COMM B,
  427. TBF02_SCH_MILL A,
  428. TBG04_SLAB_YARD C,
  429. TBE02_ORD_PRC D,
  430. (SELECT PROC_RATE FROM TBE01_PROC_RATE WHERE PROC_CD = 'R') R
  431. WHERE A.SLAB_NO = P_SLAB_NO
  432. AND B.ORD_NO = D.ORD_NO
  433. AND B.ORD_SEQ = D.ORD_SEQ
  434. AND SUBSTR(A.CUR_LOAD_LOC, 1, 6) = C.YARD_ADDR
  435. AND B.SLAB_NO = C.SLAB_NO
  436. AND B.CUR_LOAD_LOC = C.YARD_ADDR || C.STORELAY
  437. AND B.SLAB_STAT = '2'
  438. AND B.SLAB_RT IN ('H', 'C')
  439. AND B.CUR_LOAD_LOC LIKE 'Z%'
  440. ------------------------------------------------------------------------------------------
  441. --同成分 同炉次 同牌号 符号尺寸 以及订单单重要求才可以替换
  442. AND SUBSTR(A.SLAB_NO, 1, 10) = SUBSTR(B.SLAB_NO, 1, 10)
  443. AND B.SLAB_WTH BETWEEN D.ORD_WTH AND D.ORD_WTH + 100
  444. AND (B.STL_GRD = D.STL_GRD) -- 同牌号
  445. AND (B.SLAB_WGT * R.PROC_RATE / 100) BETWEEN D.ORD_UNIT_WGT_MIN AND
  446. D.ORD_UNIT_WGT_MAX
  447. AND (GF_NIB028720(B.SLAB_NO, D.ORD_NO, D.ORD_SEQ) = 'YY') -- 检查成分项目
  448. -------------------------------------------------------------------------------------------
  449. AND B.YARD_LOCK_YN IS NULL;
  450. IF (LV_UP_CUR_LOAD_LOC <> 'NULL') THEN
  451. SELECT NVL(X.SLAB_NO, 'XX'), NVL(X.CUR_LOAD_LOC, 'XX')
  452. INTO LV_UP_SLAB_NO, LV_UP_CUR_LOAD_LOC
  453. FROM TBG02_SLAB_COMM X
  454. WHERE X.CUR_LOAD_LOC = LV_UP_CUR_LOAD_LOC
  455. AND X.SLAB_STAT = '2'
  456. AND ROWNUM = 1;
  457. IF (LV_UP_SLAB_NO <> 'XX' AND LV_UP_CUR_LOAD_LOC <> 'XX') THEN
  458. UPDATE TBF02_SCH_MILL B
  459. SET B.SLAB_NO_DOWN_LOCK = LV_UP_SLAB_NO,
  460. B.LOAD_LOC_DOWN_LOCK = LV_UP_CUR_LOAD_LOC,
  461. B.YARD_LOCK_YN = 'Y'
  462. WHERE B.SLAB_NO = P_SLAB_NO;
  463. UPDATE TBG02_SLAB_COMM B
  464. SET B.YARD_LOCK_YN = 'Y'
  465. WHERE B.SLAB_NO = LV_UP_SLAB_NO;
  466. SLAB_REP_EACHOTHER(P_SLAB_NO, LV_UP_SLAB_NO, P_REG_ID);
  467. END IF;
  468. END IF;
  469. END;
  470. /************************************************************************/
  471. /* procedure REP_UPSLAB Author: SunJiawang */
  472. /************************************************************************/
  473. /* DESCRIPTION 将上层板坯替换下层板坯,对订单信息互换 */
  474. /************************************************************************/
  475. /* create 090810
  476. /* IN P_SLAB_NO_DOWN 上层板坯
  477. /* IN P_SLAB_NO_UP 下层板坯
  478. /************************************************************************/
  479. PROCEDURE SLAB_REP_EACHOTHER(P_SLAB_NO_DOWN TBG02_SLAB_COMM.SLAB_NO%TYPE,
  480. P_SLAB_NO_UP TBG02_SLAB_COMM.SLAB_NO%TYPE,
  481. P_REG_ID VARCHAR) IS
  482. LV_ORD_NO_DOWN TBF02_SCH_MILL.ORD_NO%TYPE;
  483. LV_ORD_NO_UP TBF02_SCH_MILL.ORD_NO%TYPE;
  484. LV_ORD_SEQ_DOWN TBF02_SCH_MILL.ORD_SEQ%TYPE;
  485. LV_ORD_SEQ_UP TBF02_SCH_MILL.ORD_SEQ%TYPE;
  486. LV_REP_SUCCESS_YN VARCHAR(1) := '';
  487. BEGIN
  488. SELECT DECODE(ORD_FL, '1', A.ORD_NO, 'XX'),
  489. DECODE(ORD_FL, '1', A.ORD_SEQ, 'XX')
  490. INTO LV_ORD_NO_DOWN, LV_ORD_SEQ_DOWN
  491. FROM TBG02_SLAB_COMM A
  492. WHERE A.SLAB_NO = P_SLAB_NO_DOWN
  493. AND A.SLAB_STAT = '2'
  494. AND ROWNUM = 1;
  495. SELECT DECODE(ORD_FL, '1', A.ORD_NO, 'XX'),
  496. DECODE(ORD_FL, '1', A.ORD_SEQ, 'XX')
  497. INTO LV_ORD_NO_UP, LV_ORD_SEQ_UP
  498. FROM TBG02_SLAB_COMM A
  499. WHERE A.SLAB_NO = P_SLAB_NO_UP
  500. AND A.SLAB_STAT = '2'
  501. AND ROWNUM = 1;
  502. IF P_SLAB_NO_DOWN <> P_SLAB_NO_UP THEN
  503. IF (LV_ORD_NO_DOWN <> 'XX' OR LV_ORD_SEQ_DOWN <> 'XX') THEN
  504. NIE03_SERVEAS.CHK_IS_SYN;
  505. NIE03_SERVEAS.SERVE_HIS('TM',
  506. P_SLAB_NO_UP,
  507. LV_ORD_NO_DOWN,
  508. LV_ORD_SEQ_DOWN,
  509. P_REG_ID);
  510. NIE03_SERVEAS.SLAB_SERVE(P_SLAB_NO_UP,
  511. LV_ORD_NO_DOWN,
  512. LV_ORD_SEQ_DOWN,
  513. P_REG_ID);
  514. --调用进程 NIE012070
  515. OS_COMM.SAVE_ORD_STS('TM',
  516. P_SLAB_NO_UP,
  517. 'AutoRepSlabCurLoc');
  518. LV_REP_SUCCESS_YN := 'Y';
  519. END IF;
  520. IF LV_REP_SUCCESS_YN = 'Y' THEN
  521. IF (LV_ORD_NO_UP <> 'XX' AND LV_ORD_SEQ_UP <> 'XX') THEN
  522. OS_COMM.CHK_IS_SYN;
  523. NIE03_SERVEAS.SERVE_HIS('TM',
  524. P_SLAB_NO_DOWN,
  525. LV_ORD_NO_UP,
  526. LV_ORD_SEQ_UP,
  527. P_REG_ID);
  528. NIE03_SERVEAS.SLAB_SERVE(P_SLAB_NO_DOWN,
  529. LV_ORD_NO_UP,
  530. LV_ORD_SEQ_UP,
  531. P_REG_ID);
  532. --调用进程 NIE012070
  533. OS_COMM.SAVE_ORD_STS('TM',
  534. P_SLAB_NO_DOWN,
  535. 'AutoRepSlabCurLoc');
  536. END IF;
  537. END IF;
  538. END IF;
  539. END;
  540. /************************************************************************/
  541. /* procedure SLAB_REP Author: SunJiawang */
  542. /************************************************************************/
  543. /* DESCRIPTION 板坯充当功能 */
  544. /************************************************************************/
  545. /* create 090810
  546. /* IN P_MAT_NO 充当板坯
  547. /* IN P_ORD_NO 充当订单号
  548. /* IN P_ORD_SEQ 充当订单行
  549. /************************************************************************/
  550. /* PROCEDURE SLAB_REP (
  551. P_MAT_NO IN VARCHAR
  552. ,P_ORD_NO IN TBE02_ORD_PRC.ORD_NO%TYPE
  553. ,P_ORD_SEQ IN TBE02_ORD_PRC.ORD_SEQ%TYPE
  554. ,P_REG_ID IN VARCHAR
  555. )IS
  556. BEGIN
  557. \* UPDATE TBG02_SLAB_COMM A SET
  558. BEF_PROG_CD = CUR_PROG_CD,
  559. BEF_PROG_CD_PGM = CUR_PROG_CD_PGM,
  560. BEF_PROG_CD_DTIME = CUR_PROG_CD_DTIME,
  561. CUR_PROG_CD = 'RBA',
  562. CUR_PROG_CD_PGM = 'NIE03_SERVEAS',
  563. CUR_PROG_CD_DTIME = TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISS'),
  564. ORD_FL = '1',
  565. NONORD_CAUSE_CD = '',
  566. NONORD_OCR_DTIME = '',
  567. MOD_ID = P_REG_ID,
  568. MOD_DTIME = TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISS'),
  569. ORG_ORD_NO = DECODE(ORD_FL,'1',ORD_NO,''),
  570. ORG_ORD_SEQ = DECODE(ORD_FL,'1',ORD_SEQ,''),
  571. (ORD_NO, ORD_SEQ, CUST_CD, ORDCUST_CD, ORD_USE_CD, PRODNM_CD, SF_METHOD,
  572. SPEC_ABBSYM, DEVLMT_DTIME, INSTR_COIL_THK, INSTR_COIL_WTH, INSTR_COIL_INDIA,
  573. INSTR_COIL_WGT, INSTR_COIL_LEN, INSTR_COIL_OUTDIA, SLAB_INGR_DEC_GRD) =
  574. (SELECT ORD_NO, ORD_SEQ, CUST_CD, ORDCUST_CD, ORD_USEAGE_CD, PRODNM_CD, SCARPING_PROC_YN,
  575. SPEC_ABBSYM, DEL_TO_DATE, ORD_THK, ORD_WTH, ORD_INDIA,
  576. (A.SLAB_WGT * C.PROC_RATE / 100),
  577. (A.SLAB_WGT * C.PROC_RATE / 100) / (B.ORD_THK * B.ORD_WTH * 7.85) * 1000000,
  578. SQRT(4 * (A.SLAB_WGT * C.PROC_RATE / 100) / (B.ORD_WTH / 1000000 * 7.85 * 3.14 ) + (B.ORD_INDIA * B.ORD_INDIA)),
  579. DECODE(GF_NIB028720(A.SLAB_NO, ORD_NO, ORD_SEQ), 'YY', '1', '2')
  580. FROM TBE02_ORD_PRC B, (
  581. SELECT PROC_RATE FROM TBE01_PROC_RATE WHERE PROC_CD = 'R') C
  582. WHERE ORD_NO = P_ORD_NO
  583. AND ORD_SEQ = P_ORD_SEQ)
  584. WHERE SLAB_NO = P_MAT_NO;*\
  585. UPDATE TBG02_SLAB_COMM A SET
  586. BEF_PROG_CD = CUR_PROG_CD,
  587. BEF_PROG_CD_PGM = CUR_PROG_CD_PGM,
  588. BEF_PROG_CD_DTIME = CUR_PROG_CD_DTIME,
  589. -----------------------------------------------------------------------------------------
  590. BEF_STL_GRD = STL_GRD,--充当的时候记录牌号历史 MODIFY BY SJW 090813
  591. -----------------------------------------------------------------------------------------
  592. CUR_PROG_CD = 'RBA',
  593. CUR_PROG_CD_PGM = 'AutoRepSlabCurLoc',
  594. CUR_PROG_CD_DTIME = TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISS'),
  595. ORD_FL = '1',
  596. NONORD_CAUSE_CD = '',
  597. NONORD_OCR_DTIME = '',
  598. SLAB_INGR_DEC_GRD = '1',
  599. SLAB_SIZE_DEC_GRD = '1',
  600. EXTSHAPE_GRD = '1',
  601. MOD_ID = P_REG_ID,
  602. MOD_DTIME = TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISS'),
  603. --充当将当前订单写入原始订单
  604. ORG_ORD_NO = DECODE(ORD_FL,'1',ORD_NO,''),
  605. ORG_ORD_SEQ = DECODE(ORD_FL,'1',ORD_SEQ,''),
  606. (ORD_NO, ORD_SEQ, CUST_CD, ORDCUST_CD, ORD_USE_CD, PRODNM_CD, SF_METHOD,
  607. SPEC_ABBSYM, DEVLMT_DTIME, INSTR_COIL_THK, INSTR_COIL_WTH, INSTR_COIL_INDIA,
  608. INSTR_COIL_WGT, INSTR_COIL_LEN, INSTR_COIL_OUTDIA,STL_GRD) =
  609. (SELECT ORD_NO, ORD_SEQ, CUST_CD, ORDCUST_CD, ORD_USEAGE_CD, PRODNM_CD, SCARPING_PROC_YN,
  610. SPEC_ABBSYM, DEL_TO_DATE, ORD_THK, ORD_WTH, ORD_INDIA,
  611. (A.SLAB_WGT * C.PROC_RATE / 100),
  612. (A.SLAB_WGT * C.PROC_RATE / 100) / (B.ORD_THK * B.ORD_WTH * 7.85) * 1000000,
  613. SQRT(4 * (A.SLAB_WGT * C.PROC_RATE / 100) / (B.ORD_WTH / 1000000 * 7.85 * 3.14 ) + (B.ORD_INDIA * B.ORD_INDIA))
  614. , STL_GRD
  615. --DECODE(GF_NIB028720(A.SLAB_NO, ORD_NO, ORD_SEQ), 'YY', '1', '2')
  616. FROM TBE02_ORD_PRC B, (
  617. SELECT PROC_RATE FROM TBE01_PROC_RATE WHERE PROC_CD = 'R') C
  618. WHERE ORD_NO = P_ORD_NO
  619. AND ORD_SEQ = P_ORD_SEQ)
  620. WHERE SLAB_NO = P_MAT_NO;
  621. DELETE TBG02_SLAB_COMM_D
  622. WHERE SLAB_NO = P_MAT_NO;
  623. INSERT INTO TBG02_SLAB_COMM_D
  624. ( SLAB_NO, SLAB_CUT_SEQ, SLAB_THK, SLAB_WTH, SLAB_LEN,
  625. ORD_THK, ORD_WTH, ORD_LEN, ORD_WGT, COIL_INDIA,
  626. COIL_OUTDIA, ORD_NO, ORD_SEQ, ORD_FL
  627. )
  628. SELECT SLAB_NO, '01', SLAB_THK, SLAB_WTH, SLAB_LEN,
  629. INSTR_COIL_THK, INSTR_COIL_WTH, INSTR_COIL_LEN, INSTR_COIL_WGT, INSTR_COIL_INDIA,
  630. INSTR_COIL_OUTDIA, ORD_NO, ORD_SEQ, '1'
  631. FROM TBG02_SLAB_COMM
  632. WHERE SLAB_NO = P_MAT_NO;
  633. END;
  634. */
  635. /************************************************************************/
  636. /* procedure REP_UP_SLAB_INFOS Author: SunJiawang */
  637. /************************************************************************/
  638. /* DESCRIPTION 删除最处编制的计划 替换为上层板坯的轧制计划 */
  639. /************************************************************************/
  640. /* create 090810
  641. /************************************************************************/
  642. PROCEDURE REP_UP_SLAB_INFOS IS
  643. CURSOR LV_CUR_LOCK_SLAB_NO IS
  644. SELECT A.SLAB_NO_DOWN_LOCK
  645. FROM TBF02_SCH_MILL A
  646. ORDER BY A.ROLL_SLAB_SEQ ASC;
  647. LV_REC_LOCK_SLAB_NO LV_CUR_LOCK_SLAB_NO%ROWTYPE;
  648. BEGIN
  649. OPEN LV_CUR_LOCK_SLAB_NO;
  650. --记录好锁定板坯信息后,删除轧制计划临时表,将锁定的板坯编入轧制计划
  651. DELETE FROM TBF02_SCH_MILL;
  652. DELETE FROM TBF02_SCH_MILL_D;
  653. LOOP
  654. FETCH LV_CUR_LOCK_SLAB_NO
  655. INTO LV_REC_LOCK_SLAB_NO;
  656. EXIT WHEN LV_CUR_LOCK_SLAB_NO%NOTFOUND;
  657. I_SCH_MILL(LV_REC_LOCK_SLAB_NO.SLAB_NO_DOWN_LOCK);
  658. END LOOP;
  659. CLOSE LV_CUR_LOCK_SLAB_NO;
  660. --重新编制详细轧制计划 TBF02_SCH_MILL_D
  661. INSSCH_MILL_D;
  662. END;
  663. END UIF023010;
  664. /