f62e504bd10f0d7a0c6e9349d2dae20931e0239a.svn-base 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909
  1. package xin.glue.nui.F.F02;
  2. import xin.glue.user.common.GlobalConstants;
  3. import xin.glue.user.common.LogGpError;
  4. import xin.glue.user.common.StringUtils;
  5. import com.posdata.glue.PosException;
  6. import com.posdata.glue.biz.activity.PosActivity;
  7. import com.posdata.glue.biz.constants.PosBizControlConstants;
  8. import com.posdata.glue.context.PosContext;
  9. import com.posdata.glue.dao.vo.PosParameter;
  10. import com.posdata.glue.dao.vo.PosRow;
  11. import com.posdata.glue.dao.vo.PosRowSet;
  12. import com.posdata.glue.msg.PosMessage;
  13. //import java.lang.Long;
  14. /* Program Name MILLRollSeqChange (NIF024030)
  15. * Description MILL WORK INSTRUCTION CHANGING ROLL SEQUENCE
  16. * Write By KIM SUNG HO
  17. * Date 2008-11-14
  18. */
  19. /************************************************************************/
  20. /* CLASS MILLRollSeqChange Author: KIM SUNG HO */
  21. /************************************************************************/
  22. /* DESCRIPTION 轧制顺序调整 */
  23. /************************************************************************/
  24. /* UPD_TIME | WHO | PROGRAM | CONTTENT
  25. /* 090613 SUNJIAWANG 添加注释
  26. /* 090613 SUNJIAWANG NIF024030_MILLStatusChk.select 增加对入炉辊道的处理
  27. /* 090613 SUNJIAWANG NIF024030_MILLStatusChk.select add slab_stat
  28. /* 090815 SUNJIAWANG moveAble 轧辊单元不能够移动正在进行的轧辊之间
  29. /************************************************************************/
  30. public class MILLRollSeqChange extends PosActivity implements GlobalConstants {
  31. /**
  32. * 轧制顺序调整【M】
  33. * 检查操作对象位置
  34. * 检查移动对象中是否有进行的对象和已上料的板坯
  35. * 检查操作对象 头尾轧辊 头尾板坯是否存在
  36. * 进行轧辊位置移动跟换 使用临时表 TBF02_CHG_ROLL
  37. * 指示更新 TBH06_ROLL_INS TBH06_RHT_INS TBH06_MILL_INS TBH06_COIL_NO_INS
  38. * 更新TBF02_CHG_ROLL的状态
  39. * 更新 TBF02_SPEC_ROLL TBF02_SPEC_MILL TBF02_MILL_IDX 的FL
  40. * !!! add function move hcr 热装HCR 不需要检查顺序 热送HCR 移动时需要检查顺序
  41. */
  42. String P_ROLL_MANA_ST = "";
  43. String P_ROLL_MANA_EN = "";
  44. String P_ROLL_MANA_TG = "";
  45. String P_POS = "";
  46. public String runActivity(PosContext context) {
  47. long V_MOV_STATUS_CNT = 0 ;
  48. long V_MOV_COIL_STAT_CNT = 0;
  49. long V_MOV_SLAB_STAT_CNT = 0; //已切割形成的板坯
  50. long V_TAG_STATUS_CNT = 0 ;
  51. long V_MOV_HCR_CNT = 0 ;
  52. long V_TAG_HCR_CNT = 0 ;
  53. long V_TAG_COIL_STAT_CNT = 0;
  54. long V_TAG_HCR_SLAB_STAT_CNT = 0;
  55. long V_ORG_SEQ = 0 ;
  56. long V_CHG_SEQ = 0 ;
  57. long V_SEQ_ST = 0 ;
  58. long V_SEQ_EN = 0 ;
  59. long V_SEQ_TG = 0 ;
  60. long V_SHIFT_CNT = 0 ;
  61. long V_MOVE_CNT = 0 ;
  62. long V_SHIFT_FR_SEQ = 0 ;
  63. long V_SHIFT_TO_SEQ = 0 ;
  64. String V_ROLL_MANA_NO = "" ;
  65. String V_ROLL_MANA_IC = "" ;
  66. String V_BEF_ROLL_MANA_NO = "" ;
  67. String V_CHG_ROLL_MANA_NO = "" ;
  68. String V_ROLL_MANA_ST = "" ;
  69. String V_ROLL_MANA_EN = "" ;
  70. String V_BEF_ROLL_MANA_ST = "" ;
  71. String V_BEF_ROLL_MANA_EN = "" ;
  72. String V_AFT_ROLL_MANA_ST = "" ;
  73. String V_AFT_ROLL_MANA_EN = "" ;
  74. String V_BEF_SLAB_NO_ST = "" ;
  75. String V_BEF_SLAB_NO_EN = "" ;
  76. String V_AFT_SLAB_NO_ST = "" ;
  77. String V_AFT_SLAB_NO_EN = "" ;
  78. String V_CHG_FL = "" ;
  79. String V_TABLE_ID = "" ;
  80. String V_TABLE_MODE = "" ;
  81. String V_ERR_DESC = "" ;
  82. String V_RTN_NAME = "" ;
  83. PosMessage message = context.getMessage();
  84. //ROLL_MANA_NO FROM/TO/TARGET
  85. P_ROLL_MANA_ST = (String)message.get("FROM");
  86. P_ROLL_MANA_EN = (String)message.get("TO");
  87. P_ROLL_MANA_TG = (String)message.get("TARGET");
  88. P_POS = (String)message.get("POS");
  89. // try {
  90. if (P_ROLL_MANA_ST.compareTo(P_ROLL_MANA_EN) > 0) {
  91. //P_MODE PARAMETER ERROR MESSAGE
  92. throw new PosException("MILLRollSeqChange..ROLL_MANA_ST > ROLL_MANA_EN..");
  93. } else if (P_ROLL_MANA_ST.compareTo(P_ROLL_MANA_TG) < 0 && P_ROLL_MANA_EN.compareTo(P_ROLL_MANA_TG) > 0) {
  94. //P_MODE PARAMETER ERROR MESSAGE
  95. throw new PosException("MILLRollSeqChange..ROLL_MANA_ST < ROLL_MANA_TG < ROLL_MANA_EN..");
  96. } else if (P_ROLL_MANA_ST.equals(P_ROLL_MANA_TG) && P_POS.equals("A")) {
  97. //P_MODE PARAMETER ERROR MESSAGE
  98. throw new PosException("MILLRollSeqChange..ROLL_MANA_ST = ROLL_MANA_TG, P_POS IS 'A'..");
  99. } else if (P_ROLL_MANA_ST.equals(P_ROLL_MANA_TG) && P_POS.equals("B")) {
  100. //PROGRAM EXIT (SAME WORK)
  101. throw new PosException("MILLRollSeqChange..ROLL_MANA_ST = ROLL_MANA_TG, P_POS IS 'B'..");
  102. } else if (P_ROLL_MANA_EN.equals(P_ROLL_MANA_TG) && P_POS.equals("A")) {
  103. //PROGRAM EXIT (SAME WORK)
  104. throw new PosException("MILLRollSeqChange..ROLL_MANA_EN = ROLL_MANA_TG, P_POS IS 'A'..");
  105. } else if (P_ROLL_MANA_EN.equals(P_ROLL_MANA_TG) && P_POS.equals("B")) {
  106. //P_MODE PARAMETER ERROR MESSAGE
  107. throw new PosException("MILLRollSeqChange..ROLL_MANA_EN = ROLL_MANA_TG, P_POS IS 'B'..");
  108. }
  109. //---------------------------------------------------------------------------------
  110. //MOVE, TARGET ROLL HCR_CLF = 'H', STATUS_CD = 'B' CHECK
  111. PosParameter param1 = new PosParameter();
  112. param1.setWhereClauseParameter(0, P_ROLL_MANA_ST);
  113. param1.setWhereClauseParameter(1, P_ROLL_MANA_EN);
  114. PosRowSet MILLStatusChkVO = getDao("mesdao").find("NIF024030_MILLStatusChk.select",param1);
  115. MILLStatusChkVO.reset();
  116. if (MILLStatusChkVO.hasNext()) {
  117. PosRow MILLStatusChkRow = MILLStatusChkVO.next();
  118. //移动对象中的STATUS个数
  119. V_MOV_STATUS_CNT = Long.parseLong((MILLStatusChkRow.getAttribute("STATUS_CNT")==null? "0":MILLStatusChkRow.getAttribute("STATUS_CNT")).toString());
  120. //移动对象中的HCR个数
  121. V_MOV_HCR_CNT = Long.parseLong((MILLStatusChkRow.getAttribute("HCR_CNT")==null? "0":MILLStatusChkRow.getAttribute("HCR_CNT")).toString());
  122. //移动对象中的已上料板坯的个数
  123. V_MOV_COIL_STAT_CNT = Long.parseLong((MILLStatusChkRow.getAttribute("COIL_STAT_CNT")==null? "0":MILLStatusChkRow.getAttribute("COIL_STAT_CNT")).toString());
  124. // //移动对象中的虚拟HCR板坯的个数
  125. V_MOV_SLAB_STAT_CNT = Long.parseLong((MILLStatusChkRow.getAttribute("SLAB_STAT_CNT")==null? "0":MILLStatusChkRow.getAttribute("SLAB_STAT_CNT")).toString());
  126. } else {
  127. V_MOV_STATUS_CNT = 0;
  128. V_MOV_HCR_CNT = 0;
  129. V_MOV_COIL_STAT_CNT = 0;
  130. V_MOV_SLAB_STAT_CNT = 0;
  131. }
  132. if (V_MOV_STATUS_CNT != 0){ //移动对象中含有轧制进行的板坯
  133. //MESSAGE ERROR --> PROGRAM EXIT
  134. throw new PosException("MILLRollSeqChange..STATUS_CD = 'B'..");
  135. //throw new PosException("移动对象已处于轧制进行中");
  136. }
  137. if (V_MOV_COIL_STAT_CNT != 0){ //移动对象中含有轧制进行的板坯
  138. //MESSAGE ERROR --> PROGRAM EXIT
  139. //throw new PosException("MILLRollSeqChange..STATUS_CD = 'B'..");
  140. throw new PosException("移动对象已处于上料!");
  141. }
  142. if (P_ROLL_MANA_ST.compareTo(P_ROLL_MANA_TG) > 0){
  143. this.moveAble(P_POS, P_ROLL_MANA_EN, P_ROLL_MANA_TG);
  144. }
  145. /*************************************************************************************************************************/
  146. /**
  147. * 处理含有HCR的移动对象
  148. */
  149. //MOVE ROLL IN HCR_CNT <> 0
  150. //移动对象含有虚拟HCR
  151. if (V_MOV_HCR_CNT != 0 && V_MOV_SLAB_STAT_CNT != 0){
  152. //AFTER MOVE ROLL START/END
  153. //移动对象位置在目标对象前 对象前移
  154. if (P_ROLL_MANA_ST.compareTo(P_ROLL_MANA_TG) > 0) {
  155. //BEFORE TARGET
  156. if (P_POS.equals("B")) {
  157. V_ROLL_MANA_ST = P_ROLL_MANA_TG;
  158. } else {
  159. PosParameter param2 = new PosParameter();
  160. param2.setWhereClauseParameter(0, P_ROLL_MANA_TG);
  161. PosRowSet RollManaNoAftVO = getDao("mesdao").find("NIF024030_RollManaNoAft.select",param2);
  162. RollManaNoAftVO.reset();
  163. if (RollManaNoAftVO.hasNext()) {
  164. PosRow RollManaNoAftRow = RollManaNoAftVO.next();
  165. V_ROLL_MANA_ST = (String)RollManaNoAftRow.getAttribute("ROLL_MANA_NO");
  166. } else {
  167. V_ROLL_MANA_ST = "";
  168. }
  169. }
  170. PosParameter param3 = new PosParameter();
  171. param3.setWhereClauseParameter(0, P_ROLL_MANA_ST);
  172. PosRowSet RollManaNoAftVO = getDao("mesdao").find("NIF024030_RollManaNoBef.select",param3);
  173. RollManaNoAftVO.reset();
  174. if (RollManaNoAftVO.hasNext()) {
  175. PosRow RollManaNoAftRow = RollManaNoAftVO.next();
  176. V_ROLL_MANA_EN = (String)RollManaNoAftRow.getAttribute("ROLL_MANA_NO");
  177. } else {
  178. V_ROLL_MANA_EN = "";
  179. }
  180. } else if (P_ROLL_MANA_EN.compareTo(P_ROLL_MANA_TG) < 0 ) { //对象后移
  181. //AFTER TARGET
  182. if (P_POS.equals("A")) {
  183. V_ROLL_MANA_EN = P_ROLL_MANA_TG;
  184. } else {
  185. PosParameter param4 = new PosParameter();
  186. param4.setWhereClauseParameter(0, P_ROLL_MANA_TG);
  187. PosRowSet RollManaNoAftVO = getDao("mesdao").find("NIF024030_RollManaNoBef.select",param4);
  188. RollManaNoAftVO.reset();
  189. if (RollManaNoAftVO.hasNext()) {
  190. PosRow RollManaNoAftRow = RollManaNoAftVO.next();
  191. V_ROLL_MANA_EN = (String)RollManaNoAftRow.getAttribute("ROLL_MANA_NO");
  192. } else {
  193. V_ROLL_MANA_EN = "";
  194. }
  195. }
  196. PosParameter param5 = new PosParameter();
  197. param5.setWhereClauseParameter(0, P_ROLL_MANA_EN);
  198. PosRowSet RollManaNoAftVO = getDao("mesdao").find("NIF024030_RollManaNoAft.select",param5);
  199. RollManaNoAftVO.reset();
  200. if (RollManaNoAftVO.hasNext()) {
  201. PosRow RollManaNoAftRow = RollManaNoAftVO.next();
  202. V_ROLL_MANA_ST = (String)RollManaNoAftRow.getAttribute("ROLL_MANA_NO");
  203. } else {
  204. V_ROLL_MANA_ST = "";
  205. }
  206. }
  207. PosParameter param6 = new PosParameter();
  208. param6.setWhereClauseParameter(0, V_ROLL_MANA_ST);
  209. param6.setWhereClauseParameter(1, V_ROLL_MANA_EN);
  210. PosRowSet MILLStatusChkTgVO = getDao("mesdao").find("NIF024030_MILLStatusChk.select",param6);
  211. MILLStatusChkTgVO.reset();
  212. if (MILLStatusChkTgVO.hasNext()) {
  213. PosRow MILLStatusChkTgRow = MILLStatusChkTgVO.next();
  214. V_TAG_STATUS_CNT = Long.parseLong((MILLStatusChkTgRow.getAttribute("STATUS_CNT")==null? "0":MILLStatusChkTgRow.getAttribute("STATUS_CNT")).toString());
  215. V_TAG_HCR_CNT = Long.parseLong((MILLStatusChkTgRow.getAttribute("HCR_CNT")==null? "0":MILLStatusChkTgRow.getAttribute("HCR_CNT")).toString());
  216. V_TAG_COIL_STAT_CNT = Long.parseLong((MILLStatusChkTgRow.getAttribute("COIL_STAT_CNT")==null? "0":MILLStatusChkTgRow.getAttribute("COIL_STAT_CNT")).toString());
  217. V_TAG_HCR_SLAB_STAT_CNT = Long.parseLong((MILLStatusChkTgRow.getAttribute("SLAB_STAT_CNT")==null? "0":MILLStatusChkTgRow.getAttribute("COIL_STAT_CNT")).toString());
  218. } else {
  219. V_TAG_STATUS_CNT = 0;
  220. V_TAG_HCR_CNT = 0;
  221. V_TAG_HCR_SLAB_STAT_CNT =0;
  222. }
  223. //comment by sunjiawang 090625
  224. if (V_TAG_STATUS_CNT != 0 ){
  225. //MESSAGE ERROR --> PROGRAM EXIT
  226. throw new PosException("MILLRollSeqChange..STATUS_CD = 'B' 不能够移动到已轧制进行板坯前");
  227. }
  228. if ( V_TAG_COIL_STAT_CNT != 0){
  229. //MESSAGE ERROR --> PROGRAM EXIT
  230. throw new PosException("MILLRollSeqChange..COIL_STAT_CNT = '0' 不能移动到已上料板坯前..");
  231. }
  232. //comment by sunjiawang 090625
  233. // if (V_TAG_HCR_SLAB_STAT_CNT == 0 && V_TAG_HCR_CNT != 0 ){
  234. //
  235. // //MESSAGE ERROR --> PROGRAM EXIT
  236. // throw new PosException(" MILLRollSeqChange.. V_TAG_HCR_SLAB_STAT_CNT == 0 && V_TAG_HCR_CNT != 0 虚拟HCR不能够移动到已切割HCR之前..");
  237. //
  238. // }
  239. // //移动对象中含有虚拟的HCR 后移有已切割的HCR ADD BY SUNJIAWANG 090625
  240. // if (V_MOV_HCR_CNT > 0 && V_MOV_SLAB_STAT_CNT == 0 && V_TAG_HCR_SLAB_STAT_CNT != 0 && P_POS =="A"){
  241. //
  242. // //MESSAGE ERROR --> PROGRAM EXIT
  243. // throw new PosException(" MILLRollSeqChange.. V_TAG_HCR_SLAB_STAT_CNT == 0 && V_TAG_HCR_CNT != 0 虚拟HCR不能够移动到已切割HCR之前..");
  244. //
  245. // }
  246. } //IF V_MOV_HCR_CNT != 0 END
  247. /*************************************************************************************************************************/
  248. else {
  249. //取消HCR移动的限制
  250. if ( V_TAG_STATUS_CNT != 0 || V_TAG_COIL_STAT_CNT != 0){
  251. //MESSAGE ERROR --> PROGRAM EXIT
  252. throw new PosException("MILLRollSeqChange..STATUS_CD = 'B' OR V_TAG_COIL_STAT_CNT = 0..");
  253. }
  254. } //add by sunjiwang 090625
  255. //---------------------------------------------------------------------------------
  256. //BEFORE MOVE ROLL FIRST SLAB_NO, LAST SLAB_NO SELECT
  257. //移动对象在目标位置后 : 移动对象前移
  258. if (P_ROLL_MANA_ST.compareTo(P_ROLL_MANA_TG) > 0) {
  259. V_BEF_ROLL_MANA_EN = P_ROLL_MANA_EN;
  260. //ROLL_MANA_TG BEFORE/AFTER ROLL_MANA_NO SELECT
  261. if (P_POS.equals("B")) {
  262. V_BEF_ROLL_MANA_ST = P_ROLL_MANA_TG;
  263. } else {
  264. PosParameter param7 = new PosParameter();
  265. param7.setWhereClauseParameter(0, P_ROLL_MANA_TG);
  266. PosRowSet RollManaNoAftVO = getDao("mesdao").find("NIF024030_RollManaNoAft.select",param7);
  267. RollManaNoAftVO.reset();
  268. if (RollManaNoAftVO.hasNext()) {
  269. PosRow RollManaNoAftRow = RollManaNoAftVO.next();
  270. V_BEF_ROLL_MANA_ST = (String)RollManaNoAftRow.getAttribute("ROLL_MANA_NO");
  271. } else {
  272. V_BEF_ROLL_MANA_ST = "";
  273. }
  274. }
  275. } //end (P_ROLL_MANA_ST.compareTo(P_ROLL_MANA_TG) > 0) 移动对象在目标位置后 : 移动对象前移
  276. else if (P_ROLL_MANA_EN.compareTo(P_ROLL_MANA_TG) < 0 ) //移动对象在目标对象前 :移动对象后移
  277. {
  278. V_BEF_ROLL_MANA_ST = P_ROLL_MANA_ST;
  279. //LAST ROLL_MANA_NO
  280. PosRowSet LastRollManaNoVO = getDao("mesdao").find("NIF024030_LastRollManaNo.select");
  281. LastRollManaNoVO.reset();
  282. if (LastRollManaNoVO.hasNext()) {
  283. PosRow LastRollManaNoRow = LastRollManaNoVO.next();
  284. V_BEF_ROLL_MANA_EN = (String)LastRollManaNoRow.getAttribute("ROLL_MANA_NO");
  285. } else {
  286. V_BEF_ROLL_MANA_EN = "";
  287. }
  288. }//end (P_ROLL_MANA_EN.compareTo(P_ROLL_MANA_TG) < 0 ) 移动对象在目标对象前 :移动对象后移
  289. if (V_BEF_ROLL_MANA_ST == "" || V_BEF_ROLL_MANA_EN == ""){
  290. //MESSAGE ERROR --> PROGRAM EXIT
  291. throw new PosException("MILLRollSeqChange..BEF_ROLL_MANA ST/EN IS NULL..");
  292. }
  293. //BEFORE CHANGE ROLL START/END SLAB_NO CHECK
  294. PosParameter param8 = new PosParameter();
  295. param8.setWhereClauseParameter(0, V_BEF_ROLL_MANA_ST);
  296. param8.setWhereClauseParameter(1, V_BEF_ROLL_MANA_ST);
  297. param8.setWhereClauseParameter(2, V_BEF_ROLL_MANA_EN);
  298. param8.setWhereClauseParameter(3, V_BEF_ROLL_MANA_EN);
  299. PosRowSet RollSlabSeqVO = getDao("mesdao").find("NIF024030_SlabNoFind.select",param8);
  300. RollSlabSeqVO.reset();
  301. //查找所有的移动板坯
  302. if (RollSlabSeqVO.hasNext()) {
  303. PosRow RollSlabSeqRow = RollSlabSeqVO.next();
  304. V_BEF_SLAB_NO_ST = (String)RollSlabSeqRow.getAttribute("SLAB_NO_ST");
  305. V_BEF_SLAB_NO_EN = (String)RollSlabSeqRow.getAttribute("SLAB_NO_EN");
  306. } else {
  307. V_BEF_SLAB_NO_ST = "";
  308. V_BEF_SLAB_NO_EN = "";
  309. }//对移动的头尾板坯赋值
  310. //没有可操作的对象
  311. if (V_BEF_SLAB_NO_ST == "" || V_BEF_SLAB_NO_EN == ""){
  312. //MESSAGE ERROR --> PROGRAM EXIT
  313. // throw new PosException("MILLRollSeqChange..BEF_SLAB_NO ST/EN IS NULL..");
  314. throw new PosException("没有可操作的对象 MILLRollSeqChange..BEF_SLAB_NO ST/EN IS NULL..");
  315. } //end 没有可操作的对象
  316. //--------------------------------------------------------------------------------------
  317. //AFTER MOVE ROLL FIRST SLAB_NO, LAST SLAB_NO SELECT
  318. //对象前移
  319. if (P_ROLL_MANA_ST.compareTo(P_ROLL_MANA_TG) > 0)
  320. {
  321. V_AFT_ROLL_MANA_ST = P_ROLL_MANA_ST;
  322. PosParameter param9 = new PosParameter();
  323. param9.setWhereClauseParameter(0, P_ROLL_MANA_ST);
  324. PosRowSet RollManaNoBefVO = getDao("mesdao").find("NIF024030_RollManaNoBef.select",param9);
  325. RollManaNoBefVO.reset();
  326. if (RollManaNoBefVO.hasNext()) {
  327. PosRow RollManaNoBefRow = RollManaNoBefVO.next();
  328. V_AFT_ROLL_MANA_EN = (String)RollManaNoBefRow.getAttribute("ROLL_MANA_NO");
  329. } else {
  330. V_AFT_ROLL_MANA_EN = "";
  331. }
  332. } //end 对象前移
  333. //对象后移
  334. else if (P_ROLL_MANA_EN.compareTo(P_ROLL_MANA_TG) < 0 )
  335. {
  336. PosParameter param10 = new PosParameter();
  337. param10.setWhereClauseParameter(0, P_ROLL_MANA_EN);
  338. PosRowSet RollManaNoAftVO = getDao("mesdao").find("NIF024030_RollManaNoAft.select",param10);
  339. RollManaNoAftVO.reset();
  340. //获取最小轧辊单元 赋值 V_AFT_ROLL_MANA_ST
  341. if (RollManaNoAftVO.hasNext()) {
  342. PosRow RollManaNoAftRow = RollManaNoAftVO.next();
  343. V_AFT_ROLL_MANA_ST = (String)RollManaNoAftRow.getAttribute("ROLL_MANA_NO");
  344. } else {
  345. V_AFT_ROLL_MANA_ST = "";
  346. }//end
  347. //LAST ROLL_MANA_NO
  348. PosRowSet LastRollManaNoVO = getDao("mesdao").find("NIF024030_LastRollManaNo.select");
  349. LastRollManaNoVO.reset();
  350. //获取最大轧辊单元 赋值 V_AFT_ROLL_MANA_EN
  351. if (LastRollManaNoVO.hasNext()) {
  352. PosRow LastRollManaNoRow = LastRollManaNoVO.next();
  353. V_AFT_ROLL_MANA_EN = (String)LastRollManaNoRow.getAttribute("ROLL_MANA_NO");
  354. } else {
  355. V_AFT_ROLL_MANA_EN = "";
  356. }//end
  357. if (P_POS.equals("A") && V_AFT_ROLL_MANA_EN.equals(P_ROLL_MANA_TG)) {
  358. V_AFT_ROLL_MANA_EN = P_ROLL_MANA_EN;
  359. }
  360. }//end 对象后移
  361. //没有可以操作的对象
  362. if (V_AFT_ROLL_MANA_ST == "" || V_AFT_ROLL_MANA_EN == ""){
  363. //MESSAGE ERROR --> PROGRAM EXIT
  364. //throw new PosException("MILLRollSeqChange..AFT_ROLL_MANA ST/EN IS NULL..");
  365. throw new PosException("没有可操作的对象 MILLRollSeqChange..AFT_ROLL_MANA ST/EN IS NULL..");
  366. }//end 没有可以操作的对象
  367. //MOVE AFTER CHANGE ROLL START/END SLAB_NO CHECK
  368. //获取移动之前的头尾板坯
  369. PosParameter param11 = new PosParameter();
  370. param11.setWhereClauseParameter(0, V_AFT_ROLL_MANA_ST);
  371. param11.setWhereClauseParameter(1, V_AFT_ROLL_MANA_ST);
  372. param11.setWhereClauseParameter(2, V_AFT_ROLL_MANA_EN);
  373. param11.setWhereClauseParameter(3, V_AFT_ROLL_MANA_EN);
  374. PosRowSet RollSlabSeqAftVO = getDao("mesdao").find("NIF024030_SlabNoFind.select",param11);
  375. RollSlabSeqAftVO.reset();
  376. if (RollSlabSeqAftVO.hasNext()) {
  377. PosRow RollSlabSeqAftRow = RollSlabSeqAftVO.next();
  378. V_AFT_SLAB_NO_ST = (String)RollSlabSeqAftRow.getAttribute("SLAB_NO_ST");
  379. V_AFT_SLAB_NO_EN = (String)RollSlabSeqAftRow.getAttribute("SLAB_NO_EN");
  380. } else {
  381. V_AFT_SLAB_NO_ST = "";
  382. V_AFT_SLAB_NO_EN = "";
  383. }
  384. if (V_AFT_SLAB_NO_ST == "" || V_AFT_SLAB_NO_EN == ""){
  385. //MESSAGE ERROR --> PROGRAM EXIT
  386. //throw new PosException("MILLRollSeqChange..AFT_SLAB_NO ST/EN IS NULL..");
  387. throw new PosException("缺少操作对象 MILLRollSeqChange..AFT_SLAB_NO ST/EN IS NULL..");
  388. }//end 获取移动之前的头尾板坯
  389. //DELETE TBF02_CHG_ROLL
  390. getDao("mesdao").delete("NIF024030_ChgRoll.delete");
  391. //INSERT TEMP TABLE TBF02_CHG_ROLL
  392. getDao("mesdao").insert("NIF024030_TempRoll.insert");
  393. //START ROLL_MANA_NO, SLAB_EDT_SEQ, ROLL_SLAB_SEQ CHECK
  394. PosParameter param12 = new PosParameter();
  395. param12.setWhereClauseParameter(0, P_ROLL_MANA_ST);
  396. param12.setWhereClauseParameter(1, P_ROLL_MANA_EN);
  397. param12.setWhereClauseParameter(2, P_ROLL_MANA_TG);
  398. PosRowSet RollEdtSeqFindVO = getDao("mesdao").find("NIF024030_RollEdtSeqFind.select",param12);
  399. RollEdtSeqFindVO.reset();
  400. if (RollEdtSeqFindVO.hasNext()) {
  401. PosRow RollEdtSeqFindRow = RollEdtSeqFindVO.next();
  402. V_SEQ_ST = Long.parseLong((RollEdtSeqFindRow.getAttribute("SEQ_ST")==null? "0":RollEdtSeqFindRow.getAttribute("SEQ_ST")).toString());
  403. V_SEQ_EN = Long.parseLong((RollEdtSeqFindRow.getAttribute("SEQ_EN")==null? "0":RollEdtSeqFindRow.getAttribute("SEQ_EN")).toString());
  404. V_SEQ_TG = Long.parseLong((RollEdtSeqFindRow.getAttribute("SEQ_TG")==null? "0":RollEdtSeqFindRow.getAttribute("SEQ_TG")).toString());
  405. } else {
  406. V_SEQ_ST = 0;
  407. V_SEQ_EN = 0;
  408. V_SEQ_TG = 0;
  409. }
  410. //进行轧辊移动操作
  411. //CHANGE RANGE VALUE SETTING
  412. if (V_SEQ_ST > V_SEQ_TG) {
  413. if (P_POS.equals("B")) {
  414. V_SHIFT_CNT = V_SEQ_EN - V_SEQ_ST + 1;
  415. V_MOVE_CNT = V_SEQ_TG - V_SEQ_ST;
  416. V_SHIFT_FR_SEQ = V_SEQ_TG;
  417. V_SHIFT_TO_SEQ = V_SEQ_ST - 1;
  418. } else {
  419. V_SHIFT_CNT = V_SEQ_EN - V_SEQ_ST + 1;
  420. V_MOVE_CNT = V_SEQ_TG - V_SEQ_ST + 1;
  421. V_SHIFT_FR_SEQ = V_SEQ_TG + 1;
  422. V_SHIFT_TO_SEQ = V_SEQ_ST - 1;
  423. }
  424. } else {
  425. if (P_POS.equals("B")) {
  426. V_SHIFT_CNT = V_SEQ_ST - V_SEQ_EN - 1;
  427. V_MOVE_CNT = V_SEQ_TG - V_SEQ_EN - 1;
  428. V_SHIFT_FR_SEQ = V_SEQ_EN + 1;
  429. V_SHIFT_TO_SEQ = V_SEQ_TG - 1;
  430. } else {
  431. V_SHIFT_CNT = V_SEQ_ST - V_SEQ_EN - 1;
  432. V_MOVE_CNT = V_SEQ_TG - V_SEQ_EN;
  433. V_SHIFT_FR_SEQ = V_SEQ_EN + 1;
  434. V_SHIFT_TO_SEQ = V_SEQ_TG;
  435. }
  436. }
  437. //RE-ARRANGE ROLL_SEQ CHANGING
  438. PosRowSet TmpChgRollVO = getDao("mesdao").find("NIF024030_TmpChgRoll.select");
  439. TmpChgRollVO.reset();
  440. while(TmpChgRollVO.hasNext()) {
  441. PosRow TmpChgRollRow = TmpChgRollVO.next();
  442. V_ORG_SEQ = Long.parseLong((TmpChgRollRow.getAttribute("ORG_SEQ")==null? "0":TmpChgRollRow.getAttribute("ORG_SEQ")).toString());
  443. V_CHG_SEQ = V_ORG_SEQ;
  444. //CHECK SEQUENCE
  445. if (V_CHG_SEQ >= V_SEQ_ST && V_CHG_SEQ <= V_SEQ_EN) {
  446. V_CHG_SEQ = V_CHG_SEQ + V_MOVE_CNT;
  447. } else if (V_CHG_SEQ >= V_SHIFT_FR_SEQ && V_CHG_SEQ <= V_SHIFT_TO_SEQ) {
  448. V_CHG_SEQ = V_CHG_SEQ + V_SHIFT_CNT;
  449. }
  450. if (V_ORG_SEQ != V_CHG_SEQ) {
  451. V_CHG_FL = "Y";
  452. } else {
  453. V_CHG_FL = "N";
  454. }
  455. //RE-ARRANGE UPDATE TBF02_CHG_ROLL --> CHG_SEQ
  456. PosParameter param13 = new PosParameter();
  457. param13.setWhereClauseParameter(0, String.valueOf(V_CHG_SEQ));
  458. param13.setWhereClauseParameter(1, V_CHG_FL);
  459. param13.setWhereClauseParameter(2, String.valueOf(V_ORG_SEQ));
  460. getDao("mesdao").update("NIF024030_TmpChgRoll.update",param13);
  461. } //TmpChgRollVO while END
  462. //RE-ARRANGE ROLL_MANA_NO CHANGING
  463. PosRowSet TmpChgRollChgVO = getDao("mesdao").find("NIF024030_TmpChgRollChg.select");
  464. TmpChgRollChgVO.reset();
  465. while(TmpChgRollChgVO.hasNext()) {
  466. PosRow TmpChgRollChgRow = TmpChgRollChgVO.next();
  467. V_ORG_SEQ = Long.parseLong((TmpChgRollChgRow.getAttribute("ORG_SEQ")==null? "0":TmpChgRollChgRow.getAttribute("ORG_SEQ")).toString());
  468. V_ROLL_MANA_NO = (String)TmpChgRollChgRow.getAttribute("ROLL_MANA_NO");
  469. V_CHG_FL = (String)TmpChgRollChgRow.getAttribute("FL");
  470. if (V_CHG_FL.equals("Y")) {
  471. if (V_BEF_ROLL_MANA_NO.equals("")) {
  472. V_ROLL_MANA_NO = "A0001";
  473. } else {
  474. if (V_BEF_ROLL_MANA_NO.substring(1, 5).equals("9999")) {//20210124 == 调整为equals
  475. //ROLL_MANA_NO HEADER ALPHABET + 1
  476. String nextSeqQr = "SELECT CHR(ASCII('" + V_BEF_ROLL_MANA_NO.substring(0, 1) + "')+1) ROLL_HEAD FROM DUAL";
  477. PosRowSet nextSeqVO = getDao("mesdao").findByQueryStatement(nextSeqQr);
  478. nextSeqVO.reset();
  479. PosRow nextSeqRow = nextSeqVO.next();
  480. String V_ROLL_HEAD = (String)nextSeqRow.getAttribute("ROLL_HEAD");
  481. V_ROLL_MANA_NO = V_ROLL_HEAD + "0001";
  482. } else {
  483. V_ROLL_MANA_IC = StringUtils.calculateIntegerStringValue(V_BEF_ROLL_MANA_NO.substring(1, 5), 1);
  484. V_ROLL_MANA_NO = new StringBuffer(5).append(V_BEF_ROLL_MANA_NO.substring(0, 1)).append(V_ROLL_MANA_IC).toString();
  485. }
  486. }
  487. }
  488. V_BEF_ROLL_MANA_NO = V_ROLL_MANA_NO;
  489. //RE-ARRANGE UPDATE TBF02_CHG_ROLL --> CHG_ROLL_MANA_NO
  490. PosParameter param14 = new PosParameter();
  491. param14.setWhereClauseParameter(0, V_ROLL_MANA_NO);
  492. param14.setWhereClauseParameter(1, String.valueOf(V_ORG_SEQ));
  493. getDao("mesdao").update("NIF024030_TmpChgRollManaNo.update",param14);
  494. } //TmpChgRollChgVO while END
  495. //-------------------------------------------------------------------------------------------------------
  496. //CHANGE ROLL_MANA_NO UPDATE
  497. PosRowSet ChgManaNoUpdVO = getDao("mesdao").find("NIF024030_ChgManaNoUpd.select");
  498. ChgManaNoUpdVO.reset();
  499. while(ChgManaNoUpdVO.hasNext()) {
  500. PosRow ChgManaNoUpdRow = ChgManaNoUpdVO.next();
  501. V_ROLL_MANA_NO = (String)ChgManaNoUpdRow.getAttribute("ROLL_MANA_NO");
  502. V_CHG_ROLL_MANA_NO = (String)ChgManaNoUpdRow.getAttribute("CHG_ROLL_MANA_NO");
  503. //UPDATE TBF02_SPEC_ROLL (ROLL_MANA_NO)
  504. PosParameter param17 = new PosParameter();
  505. param17.setWhereClauseParameter(0, V_CHG_ROLL_MANA_NO);
  506. param17.setWhereClauseParameter(1, V_ROLL_MANA_NO);
  507. int UpdCnt17 = getDao("mesdao").update("NIF024030_SpecRollUpd.update",param17);
  508. if (UpdCnt17 == 0) {
  509. V_TABLE_ID = "TBF02_SPEC_ROLL";
  510. V_TABLE_MODE = "U";
  511. V_ERR_DESC = "TBF02_SPEC_ROLL UPDATE COUNT IS ZERO";
  512. V_RTN_NAME = "MILLRollSeqChange TBF02_SPEC_ROLL UPDATE17";
  513. LogGpError.logMessageToDB("MILLRollSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME);
  514. //throw new PosException(V_RTN_NAME);
  515. }
  516. //UPDATE TBF02_SPEC_MILL (ROLL_MANA_NO)
  517. PosParameter param18= new PosParameter();
  518. param18.setWhereClauseParameter(0, V_CHG_ROLL_MANA_NO);
  519. param18.setWhereClauseParameter(1, V_ROLL_MANA_NO);
  520. int UpdCnt18 = getDao("mesdao").update("NIF024030_SpecMillUpd.update",param18);
  521. if (UpdCnt18 == 0) {
  522. V_TABLE_ID = "TBF02_SPEC_MILL";
  523. V_TABLE_MODE = "U";
  524. V_ERR_DESC = "TBF02_SPEC_MILL UPDATE COUNT IS ZERO";
  525. V_RTN_NAME = "MILLRollSeqChange TBF02_SPEC_MILL UPDATE18";
  526. LogGpError.logMessageToDB("MILLRollSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME);
  527. //throw new PosException(V_RTN_NAME);
  528. }
  529. //UPDATE TBF02_MILL_IDX (ROLL_MANA_NO)
  530. PosParameter param19 = new PosParameter();
  531. param19.setWhereClauseParameter(0, V_CHG_ROLL_MANA_NO);
  532. param19.setWhereClauseParameter(1, V_ROLL_MANA_NO);
  533. int UpdCnt19 = getDao("mesdao").update("NIF024030_MillIdxUpd.update",param19);
  534. if (UpdCnt19 == 0) {
  535. V_TABLE_ID = "TBF02_MILL_IDX";
  536. V_TABLE_MODE = "U";
  537. V_ERR_DESC = "TBF02_MILL_IDX UPDATE COUNT IS ZERO";
  538. V_RTN_NAME = "MILLRollSeqChange TBF02_MILL_IDX UPDATE19";
  539. LogGpError.logMessageToDB("MILLRollSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME);
  540. //throw new PosException(V_RTN_NAME);
  541. }
  542. } //ChgRollManaNoVO while END
  543. //---------------------------------------------------------------------------------
  544. //MILL INSTRUCTION LEVEL2 RE-SEND(UPDATE) PROCESS
  545. //TBH06_L2_ROLL_UNIT_INS SEND PROCESS
  546. int InsertA = getDao("mesdao").insert("NIF024030_L2ROLLReSend.insert");
  547. if (InsertA == 0) {
  548. V_TABLE_ID = "TBH06_L2_ROLL_UNIT_INS";
  549. V_TABLE_MODE = "I";
  550. V_ERR_DESC = "TBH06_L2_ROLL_UNIT_INS INSERT COUNT IS ZERO";
  551. V_RTN_NAME = "MILLRollSeqChange TBH06_L2_ROLL_UNIT_INS INSERTA";
  552. LogGpError.logMessageToDB("MILLRollSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME);
  553. throw new PosException(V_RTN_NAME);
  554. }
  555. //TBH06_L2_RHT_INS RE-SEND PROCESS
  556. int InsertB = getDao("mesdao").insert("NIF024030_L2RHTReSend.insert");
  557. if (InsertB == 0) {
  558. V_TABLE_ID = "TBH06_L2_RHT_INS";
  559. V_TABLE_MODE = "I";
  560. V_ERR_DESC = "TBH06_L2_RHT_INS INSERT COUNT IS ZERO";
  561. V_RTN_NAME = "MILLRollSeqChange TBH06_L2_RHT_INS INSERTB";
  562. LogGpError.logMessageToDB("MILLRollSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME);
  563. throw new PosException(V_RTN_NAME);
  564. }
  565. //TBH06_L2_MILL_INS RE-SEND PROCESS
  566. int InsertC = getDao("mesdao").insert("NIF024030_L2MILLReSend.insert");
  567. if (InsertC == 0) {
  568. V_TABLE_ID = "TBH06_L2_MILL_INS";
  569. V_TABLE_MODE = "I";
  570. V_ERR_DESC = "TBH06_L2_MILL_INS INSERT COUNT IS ZERO";
  571. V_RTN_NAME = "MILLRollSeqChange TBH06_L2_MILL_INS INSERTC";
  572. LogGpError.logMessageToDB("MILLRollSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME);
  573. throw new PosException(V_RTN_NAME);
  574. }
  575. //CHANGE ROLL_MANA_NO
  576. PosRowSet ChgRollManaNoVO = getDao("mesdao").find("NIF024030_ChgRollManaNo.select");
  577. ChgRollManaNoVO.reset();
  578. while(ChgRollManaNoVO.hasNext()) {
  579. PosRow ChgRollManaNoRow = ChgRollManaNoVO.next();
  580. V_ROLL_MANA_NO = (String)ChgRollManaNoRow.getAttribute("CHG_ROLL_MANA_NO");
  581. //SELECT NXET SET SEQUEANCE
  582. String RenextSeqQr = "SELECT L2_COIL_NO_SET_SEQ.NEXTVAL SET_SEQ FROM DUAL ";
  583. PosRowSet RenextSeqVO = getDao("mesdao").findByQueryStatement(RenextSeqQr);
  584. RenextSeqVO.reset();
  585. PosRow RenextSeqRow = RenextSeqVO.next();
  586. Number V_RESET_SEQ = (Number)RenextSeqRow.getAttribute("SET_SEQ");
  587. //TBH06_L2_COIL_NO_INS RE-SEND PROCESS
  588. PosParameter paramD = new PosParameter();
  589. paramD.setValueParamter(0, V_RESET_SEQ);
  590. paramD.setValueParamter(1, V_ROLL_MANA_NO);
  591. int InsertD = getDao("mesdao").insert("NIF024030_L2ROLLCOILReSend.insert",paramD);
  592. if (InsertD == 0) {
  593. V_TABLE_ID = "TBH06_L2_COIL_NO_INS";
  594. V_TABLE_MODE = "I";
  595. V_ERR_DESC = "TBH06_L2_COIL_NO_INS INSERT COUNT IS ZERO";
  596. V_RTN_NAME = "MILLRollSeqChange TBH06_L2_COIL_NO_INS INSERT D " + V_ROLL_MANA_NO;
  597. LogGpError.logMessageToDB("MILLRollSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME);
  598. throw new PosException(V_RTN_NAME);
  599. }
  600. } //ChgRollManaNoVO while END
  601. //MILL INSTRUCTION LEVEL2 RE-SEND(UPDATE) PROCESS END
  602. //---------------------------------------------------------------------------------
  603. //LAST JOB DELETE TBF02_CHG_ROLL
  604. getDao("mesdao").delete("NIF024030_ChgRoll.delete");
  605. //FL INIT TBF02_SPEC_ROLL
  606. getDao("mesdao").update("NIF024030_InitSpecRoll.update");
  607. //FL INIT TBF02_SPEC_MILL
  608. getDao("mesdao").update("NIF024030_InitSpecMill.update");
  609. //FL INIT TBF02_MILL_IDX
  610. getDao("mesdao").update("NIF024030_InitMillIdx.update");
  611. // }
  612. // catch (PosException ex)
  613. // {
  614. // context.put(SERVICE_ERR_MSG, ex.getMessage());
  615. // throw ex;
  616. // }
  617. // catch (Throwable t)
  618. // {
  619. // context.put(SERVICE_ERR_MSG, t.getMessage());
  620. // throw new PosException(t.getMessage(), t);
  621. // }
  622. return PosBizControlConstants.SUCCESS;
  623. }
  624. /**
  625. * @param p_pos A : 后 B:前
  626. * @param p_roll_st 轧辊单元起始位置
  627. * @param p_roll_aim 轧辊单元目标位置
  628. * @return moveable 是否可以移动
  629. */
  630. public boolean moveAble (String p_pos ,String p_roll_end,String p_aim) {
  631. boolean moveable = true;
  632. PosParameter param = new PosParameter();
  633. param.setWhereClauseParameter(0,P_ROLL_MANA_EN);
  634. param.setWhereClauseParameter(0,P_ROLL_MANA_TG);
  635. long v_cnt_coil_stat = 0;
  636. long v_cnt_status = 0;
  637. PosRowSet rowset = null;
  638. PosRow row = null;
  639. if("A".equals(p_pos)) {
  640. rowset = this.getDao("mesdao").find("NIF024030_MILLStatusChkPosA.select", param);
  641. }else if("B".equals(p_pos)) {
  642. rowset = this.getDao("mesdao").find("NIF024030_MILLStatusChk.select", param);
  643. }else {
  644. throw new PosException("[MILLRollSeqChange]:[moveAble]:p_pos...位置没有输入...");
  645. }
  646. while (rowset.hasNext()) {
  647. row = rowset.next();
  648. v_cnt_coil_stat = Long.parseLong(row.getAttribute("COIL_STAT_CNT").toString());
  649. v_cnt_status = Long.parseLong(row.getAttribute("STATUS_CNT").toString());
  650. if(v_cnt_coil_stat > 0 || v_cnt_status > 0) {
  651. throw new PosException("[MILLRollSeqChange]:[moveAble]:v_cnt_coil_stat || v_cnt_status 不能够插入在已上料板坯间...");
  652. }
  653. }
  654. return moveable;
  655. }
  656. }