5eebf40312ad53ec1766e18bc23644174832f445.svn-base 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871
  1. package xin.glue.nui.H.H02;
  2. import java.math.BigDecimal;
  3. import java.sql.CallableStatement;
  4. import java.sql.SQLException;
  5. import xin.glue.ui.common.PosDateFormat;
  6. import xin.glue.ui.common.ProduceFactory;
  7. import com.posdata.glue.PosException;
  8. import com.posdata.glue.biz.activity.PosActivity;
  9. import com.posdata.glue.biz.constants.PosBizControlConstants;
  10. import com.posdata.glue.biz.control.PosBizControlIF;
  11. import com.posdata.glue.biz.control.PosBizProvider;
  12. import com.posdata.glue.component.PosConstants;
  13. import com.posdata.glue.context.PosContext;
  14. import com.posdata.glue.dao.PosGenericDao;
  15. import com.posdata.glue.dao.vo.PosParameter;
  16. import com.posdata.glue.dao.vo.PosRow;
  17. import com.posdata.glue.dao.vo.PosRowSet;
  18. import com.posdata.glue.msg.PosMESMessageImpl;
  19. import com.posdata.glue.msg.PosMessage;
  20. public class XinSaveCoilReject extends PosActivity
  21. {
  22. public String runActivity(PosContext context)
  23. {
  24. logger.logInfo("XinSaveCoilReject START " );
  25. PosMessage message = context.getMessage();
  26. String MSG_SLAB_NO = (String)message.get("SLAB_NO");
  27. String MISSNO_CAUSE_CD = (String)message.get("MISSNO_CAUSE_CD");
  28. String MSG_MISSNO_OCR_DTIME = (String)message.get("MISSNO_OCR_DTIME");
  29. //这里判断原因代码,1-4为轧回操作处理走SLABREJECT的处理方式。5-11以及FFF走轧废处理
  30. if(MISSNO_CAUSE_CD.equals("01") || MISSNO_CAUSE_CD.equals("02") || MISSNO_CAUSE_CD.equals("03") || MISSNO_CAUSE_CD.equals("04")){
  31. //轧回的情况走加回处理的方式
  32. //这里需要通过轧回时间获取相应的班组信息,因此需要进行下列判断
  33. PosDateFormat dateFormat = new PosDateFormat();
  34. // String sShift = dateFormat.getShiftT(MSG_MISSNO_OCR_DTIME);
  35. String sShift = null;
  36. // 这里的班次的时间段就由基础表维护。可能存在2班或者3班的情况,那么就是有值的就进行判断没有的就是没有设定的。
  37. PosParameter paramSA = new PosParameter();
  38. PosParameter paramSB = new PosParameter();
  39. PosParameter paramSC = new PosParameter();
  40. //这里获取三个班次相应的时间
  41. String sqlA = "SELECT to_number(A.SM_EFNM) SM_EFNM,to_number(A.SM_ESNM) SM_ESNM FROM TBZ00_COMMCD A WHERE A.LG_CD = 'H07001' AND A.SM_CD = '1'";
  42. String sqlB = "SELECT to_number(A.SM_EFNM) SM_EFNM,to_number(A.SM_ESNM) SM_ESNM,A.SHRXM FROM TBZ00_COMMCD A WHERE A.LG_CD = 'H07001' AND A.SM_CD = '2'";
  43. String sqlC = "SELECT to_number(A.SM_EFNM) SM_EFNM,to_number(A.SM_ESNM) SM_ESNM FROM TBZ00_COMMCD A WHERE A.LG_CD = 'H07001' AND A.SM_CD = '3'";
  44. PosRowSet ShiftA = getDao("mesdao").findByQueryStatement(sqlA, paramSA);
  45. PosRowSet ShiftB = getDao("mesdao").findByQueryStatement(sqlB, paramSB);
  46. PosRowSet ShiftC = getDao("mesdao").findByQueryStatement(sqlC, paramSC);
  47. BigDecimal SM_EFNMA = null;
  48. BigDecimal SM_ESNMA = null;
  49. BigDecimal SM_EFNMB = null;
  50. BigDecimal SM_ESNMB = null;
  51. //这里是中班是否超过0点指标。如果超过0点就判断早班和晚班的情况,其它为中班。如果不超过0点就判断早班和中班的情况,其它为晚班
  52. String SHRXM = null;
  53. BigDecimal SM_EFNMC = null;
  54. BigDecimal SM_ESNMC = null;
  55. if(ShiftA.hasNext()){
  56. PosRow ShiftAA = ShiftA.next();
  57. SM_EFNMA = (BigDecimal) ShiftAA.getAttribute("SM_EFNM");
  58. SM_ESNMA = (BigDecimal) ShiftAA.getAttribute("SM_ESNM");
  59. }
  60. if(ShiftB.hasNext()){
  61. PosRow ShiftBB = ShiftB.next();
  62. SM_EFNMB = (BigDecimal) ShiftBB.getAttribute("SM_EFNM");
  63. SM_ESNMB = (BigDecimal) ShiftBB.getAttribute("SM_ESNM");
  64. SHRXM = (String) ShiftBB.getAttribute("SHRXM");
  65. }
  66. if(ShiftC.hasNext()){
  67. PosRow ShiftCC = ShiftC.next();
  68. SM_EFNMC = (BigDecimal) ShiftCC.getAttribute("SM_EFNM");
  69. SM_ESNMC = (BigDecimal) ShiftCC.getAttribute("SM_ESNM");
  70. }
  71. int SM_EFNMAA;
  72. int SM_ESNMAA;
  73. int SM_EFNMBB;
  74. int SM_ESNMBB;
  75. int SM_EFNMCC;
  76. int SM_ESNMCC;
  77. int hhmi = Integer.parseInt(MSG_MISSNO_OCR_DTIME.substring(8, 12));
  78. if(SM_EFNMA == null){
  79. SM_EFNMAA = 0;
  80. }else{
  81. SM_EFNMAA = SM_EFNMA.intValue();
  82. }
  83. if(SM_ESNMA == null){
  84. SM_ESNMAA = 0;
  85. }else{
  86. SM_ESNMAA = SM_ESNMA.intValue();
  87. }
  88. if(SM_EFNMB == null){
  89. SM_EFNMBB = 0;
  90. }else{
  91. SM_EFNMBB = SM_EFNMB.intValue();
  92. }
  93. if(SM_ESNMB == null){
  94. SM_ESNMBB = 0;
  95. }else{
  96. SM_ESNMBB = SM_ESNMB.intValue();
  97. }
  98. if(SM_EFNMC == null){
  99. SM_EFNMCC = 0;
  100. }else{
  101. SM_EFNMCC = SM_EFNMC.intValue();
  102. }
  103. if(SM_ESNMC == null){
  104. SM_ESNMCC = 0;
  105. }else{
  106. SM_ESNMCC = SM_ESNMC.intValue();
  107. }
  108. //如果出现中班输入为空的情况,说明是三班两倒。就一定会存在早班和晚班,那么只要判断早班即可
  109. if(SM_EFNMB == null || SM_ESNMB == null){
  110. if(hhmi > SM_EFNMAA && hhmi < SM_ESNMAA){
  111. //早班,这里只要判断符合不符合早班的情况即可
  112. sShift = "1";
  113. }else{
  114. sShift = "3";
  115. }
  116. }else{
  117. if(null != SHRXM && SHRXM.equals("Y")){
  118. //如果标志为Y,说明中班的结束时间超过0点,这时判断早班和晚班的情况。
  119. if(hhmi > SM_EFNMAA && hhmi < SM_ESNMAA){
  120. sShift = "1";
  121. }else if(hhmi > SM_EFNMCC && hhmi < SM_ESNMCC){
  122. sShift = "3";
  123. }else{
  124. sShift = "2";
  125. }
  126. }else{
  127. //如果标志不为Y,说明中班的结束时间没有超过0点,这时判断早班和中班的情况。
  128. if(hhmi > SM_EFNMAA && hhmi < SM_ESNMAA){
  129. sShift = "1";
  130. }else if(hhmi > SM_EFNMBB && hhmi < SM_ESNMBB){
  131. sShift = "2";
  132. }else{
  133. sShift = "3";
  134. }
  135. }
  136. }
  137. //这里需要用到天数前移一天和后退一天的共用方法,因为对三班和两班而言中班和晚班都可能存在跨天的情况。跨天后取班组时就要把时间前移
  138. // 这里需要获取昨天和明天的时间
  139. String ZDate = null;
  140. String MDate = null;
  141. // 当前时间加一天
  142. MDate = dateFormat.AddDateFunc(MSG_MISSNO_OCR_DTIME,1);
  143. //当前时间减一天
  144. ZDate = dateFormat.AddDateFunc(MSG_MISSNO_OCR_DTIME,-1);
  145. String sGroup = null;
  146. //判断,跨天的班组需要前移时间,这样才能对得上班组
  147. if(SM_EFNMB == null || SM_ESNMB == null){
  148. //两班的情况,这里需要对时间进行前移。把产量计算的昨天晚班的产量
  149. if(null != sShift && sShift.equals("3")){
  150. //这里还需要判断,当前时间是大于晚班开始时间小于2400还是大于0000小于结束时间
  151. if(hhmi >= SM_EFNMCC && hhmi <= 2400){
  152. PosParameter paramA = new PosParameter();
  153. paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6));
  154. paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8));
  155. paramA.setWhereClauseParameter(2, sShift);
  156. paramA.setWhereClauseParameter(3, "H");
  157. PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA);
  158. if (groupVO.hasNext()){
  159. PosRow groupROW = groupVO.next();
  160. sGroup = (String)groupROW.getAttribute("GR_GROUP_CD");
  161. }
  162. logger.logDebug(" 两班早班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME);
  163. }else if(hhmi >= 0000 && hhmi <= SM_ESNMCC){
  164. PosParameter paramA = new PosParameter();
  165. paramA.setWhereClauseParameter(0, ZDate.substring(0,6));
  166. paramA.setWhereClauseParameter(1, ZDate.substring(6,8));
  167. paramA.setWhereClauseParameter(2, sShift);
  168. paramA.setWhereClauseParameter(3, "H");
  169. PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA);
  170. if (groupVO.hasNext()){
  171. PosRow groupROW = groupVO.next();
  172. sGroup = (String)groupROW.getAttribute("GR_GROUP_CD");
  173. }
  174. logger.logDebug(" 两班晚班当前的班次班组!! "+sShift+":"+sGroup+"轧回前移时间:"+ZDate);
  175. }
  176. }else if(null != sShift && sShift.equals("1")){
  177. PosParameter paramA = new PosParameter();
  178. paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6));
  179. paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8));
  180. paramA.setWhereClauseParameter(2, sShift);
  181. paramA.setWhereClauseParameter(3, "H");
  182. PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA);
  183. if (groupVO.hasNext()){
  184. PosRow groupROW = groupVO.next();
  185. sGroup = (String)groupROW.getAttribute("GR_GROUP_CD");
  186. }
  187. logger.logDebug(" 两班早班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME);
  188. }else{
  189. //不存在
  190. logger.logDebug(" 两班班次班组不存在的情况!! ");
  191. }
  192. }else{
  193. //三班的情况
  194. if(null != SHRXM && SHRXM.equals("Y")){
  195. if(null != sShift && sShift.equals("1")){
  196. PosParameter paramA = new PosParameter();
  197. paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6));
  198. paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8));
  199. paramA.setWhereClauseParameter(2, sShift);
  200. paramA.setWhereClauseParameter(3, "H");
  201. PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA);
  202. if (groupVO.hasNext()){
  203. PosRow groupROW = groupVO.next();
  204. sGroup = (String)groupROW.getAttribute("GR_GROUP_CD");
  205. }
  206. logger.logDebug(" 三班早班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME);
  207. }else if(null != sShift && sShift.equals("2")){
  208. if(hhmi >= SM_EFNMBB && hhmi <= 2400){
  209. PosParameter paramA = new PosParameter();
  210. paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6));
  211. paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8));
  212. paramA.setWhereClauseParameter(2, sShift);
  213. paramA.setWhereClauseParameter(3, "H");
  214. PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA);
  215. if (groupVO.hasNext()){
  216. PosRow groupROW = groupVO.next();
  217. sGroup = (String)groupROW.getAttribute("GR_GROUP_CD");
  218. }
  219. logger.logDebug(" 三班中班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME);
  220. }else if(hhmi >= 0000 && hhmi <= SM_ESNMBB){
  221. PosParameter paramA = new PosParameter();
  222. paramA.setWhereClauseParameter(0, ZDate.substring(0,6));
  223. paramA.setWhereClauseParameter(1, ZDate.substring(6,8));
  224. paramA.setWhereClauseParameter(2, sShift);
  225. paramA.setWhereClauseParameter(3, "H");
  226. PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA);
  227. if (groupVO.hasNext()){
  228. PosRow groupROW = groupVO.next();
  229. sGroup = (String)groupROW.getAttribute("GR_GROUP_CD");
  230. }
  231. logger.logDebug(" 三班中班当前的班次班组!! "+sShift+":"+sGroup+"轧回前移时间:"+ZDate);
  232. }
  233. }else if(null != sShift && sShift.equals("3")){
  234. //中班超过0点,晚班是从当日的凌晨开始的
  235. PosParameter paramA = new PosParameter();
  236. paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6));
  237. paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8));
  238. paramA.setWhereClauseParameter(2, sShift);
  239. paramA.setWhereClauseParameter(3, "H");
  240. PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA);
  241. if (groupVO.hasNext()){
  242. PosRow groupROW = groupVO.next();
  243. sGroup = (String)groupROW.getAttribute("GR_GROUP_CD");
  244. }
  245. logger.logDebug(" 三班晚班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME);
  246. }
  247. }else{
  248. if(null != sShift && sShift.equals("1")){
  249. PosParameter paramA = new PosParameter();
  250. paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6));
  251. paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8));
  252. paramA.setWhereClauseParameter(2, sShift);
  253. paramA.setWhereClauseParameter(3, "H");
  254. PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA);
  255. if (groupVO.hasNext()){
  256. PosRow groupROW = groupVO.next();
  257. sGroup = (String)groupROW.getAttribute("GR_GROUP_CD");
  258. }
  259. logger.logDebug(" 三班早班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME);
  260. }else if(null != sShift && sShift.equals("2")){
  261. PosParameter paramA = new PosParameter();
  262. paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6));
  263. paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8));
  264. paramA.setWhereClauseParameter(2, sShift);
  265. paramA.setWhereClauseParameter(3, "H");
  266. PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA);
  267. if (groupVO.hasNext()){
  268. PosRow groupROW = groupVO.next();
  269. sGroup = (String)groupROW.getAttribute("GR_GROUP_CD");
  270. }
  271. logger.logDebug(" 三班中班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME);
  272. }else if(null != sShift && sShift.equals("3")){
  273. if(hhmi >= 0000 && hhmi <= SM_ESNMCC){
  274. PosParameter paramA = new PosParameter();
  275. paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6));
  276. paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8));
  277. paramA.setWhereClauseParameter(2, sShift);
  278. paramA.setWhereClauseParameter(3, "H");
  279. PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA);
  280. if (groupVO.hasNext()){
  281. PosRow groupROW = groupVO.next();
  282. sGroup = (String)groupROW.getAttribute("GR_GROUP_CD");
  283. }
  284. logger.logDebug(" 三班晚班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME);
  285. }else if(hhmi >= SM_EFNMCC && hhmi <= 2400){
  286. PosParameter paramA = new PosParameter();
  287. paramA.setWhereClauseParameter(0, MDate.substring(0,6));
  288. paramA.setWhereClauseParameter(1, MDate.substring(6,8));
  289. paramA.setWhereClauseParameter(2, sShift);
  290. paramA.setWhereClauseParameter(3, "H");
  291. PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA);
  292. if (groupVO.hasNext()){
  293. PosRow groupROW = groupVO.next();
  294. sGroup = (String)groupROW.getAttribute("GR_GROUP_CD");
  295. }
  296. logger.logDebug(" 三班晚班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MDate);
  297. }
  298. }
  299. }
  300. }
  301. String sysDate = dateFormat.getCurrentDate();
  302. logger.logDebug("XinSaveCoilReject sShift:"+sShift );
  303. PosParameter param0 = new PosParameter();
  304. param0.setWhereClauseParameter(0,MSG_SLAB_NO );
  305. PosRowSet specMillVo = getDao("mesdao").find("NIH020040_SPEC_MILL.select", param0);
  306. String CoilNo = null;
  307. Number SlabEdtSeq = null;
  308. if(specMillVo.hasNext()) {
  309. PosRow specMillROW = specMillVo.next();
  310. CoilNo = (String)specMillROW.getAttribute("COIL_NO");
  311. SlabEdtSeq = (Number)specMillROW.getAttribute("SLAB_EDT_SEQ");
  312. //这里走加回的处理方式
  313. PosParameter param00 = new PosParameter();
  314. param00.setWhereClauseParameter(0,MSG_SLAB_NO );
  315. param00.setWhereClauseParameter(1,CoilNo );
  316. PosRowSet rejVo = getDao("mesdao").find("NIH020030_01.select", param00);
  317. PosParameter param11 = new PosParameter();
  318. if(rejVo.hasNext())
  319. {
  320. //这里参数不够 ROLL_UNIT_NO、SLAB_NO
  321. //这里的作用应该是通过报文自动收一次,如果没有收成功的情况下再通过界面手工录入
  322. param11.setWhereClauseParameter(0, "");
  323. //3为轧回的情况
  324. param11.setWhereClauseParameter(1, "3");
  325. param11.setWhereClauseParameter(2, MISSNO_CAUSE_CD);
  326. // 这里标志轧回与加回的不同。所以改时间字段为标志
  327. param11.setWhereClauseParameter(3, sysDate);
  328. param11.setWhereClauseParameter(4, MSG_SLAB_NO);
  329. this.getDao("mesdao").update("NIH020030_REJ.update", param11);
  330. }
  331. else
  332. {
  333. param11.setValueParamter(0, MSG_SLAB_NO);
  334. param11.setValueParamter(1, CoilNo);
  335. param11.setValueParamter(2, "");
  336. param11.setValueParamter(3, "3");
  337. param11.setValueParamter(4, MISSNO_CAUSE_CD);
  338. //这里标志轧回与加回的不同。所以改时间字段为标志
  339. param11.setValueParamter(5, sysDate);
  340. //删除作业班次
  341. param11.setValueParamter(6, sShift);
  342. //删除作业班组
  343. param11.setValueParamter(7, sGroup);
  344. //删除作业人
  345. param11.setValueParamter(8, "NIH020040");
  346. this.getDao("mesdao").insert("NIH020040_REJ.insert", param11);
  347. }
  348. //如果出现多次吊销的情况,只在第一次的时候给予处理
  349. PosParameter param9 = new PosParameter();
  350. String sql9 = "select RHF_STAT from TBH02_REHEATFUR where slab_no = ? and coil_no = ? ";
  351. param9.setWhereClauseParameter(0, MSG_SLAB_NO);
  352. param9.setWhereClauseParameter(1, CoilNo);
  353. //这里做为是否调用品质的标志
  354. String RHF_STAT = null;
  355. PosRowSet rowset9 = getDao("mesdao").findByQueryStatement(sql9, param9);
  356. if(rowset9.hasNext()){
  357. PosRow row9 = rowset9.next();
  358. RHF_STAT = (String) row9.getAttribute("RHF_STAT");
  359. logger.logDebug("XinSaveSlabReject---> 加热炉吊销的状态:"+RHF_STAT);
  360. }
  361. PosParameter param2 = new PosParameter();
  362. param2.setWhereClauseParameter(0, "2");
  363. param2.setWhereClauseParameter(1,"C");
  364. param2.setWhereClauseParameter(2,MISSNO_CAUSE_CD);
  365. param2.setWhereClauseParameter(3,sysDate);
  366. param2.setWhereClauseParameter(4,"NIH020040");
  367. param2.setWhereClauseParameter(5,MSG_SLAB_NO);
  368. //改变板坯公共表中的板坯状态信息
  369. getDao("mesdao").update("UIH020020_04.update", param2);
  370. //把板坯数据放入C8辊道上
  371. PosParameter param77 = new PosParameter();
  372. param77.setWhereClauseParameter(0, MSG_SLAB_NO);
  373. param77.setWhereClauseParameter(1, "NIH020040");
  374. param77.setWhereClauseParameter(2, "C8");
  375. getDao("mesdao").update("UIH020020_10.update", param77);
  376. PosParameter param4 = new PosParameter();
  377. param4.setWhereClauseParameter(0,"3");
  378. param4.setWhereClauseParameter(1,MSG_SLAB_NO);
  379. param4.setWhereClauseParameter(2,CoilNo);
  380. //这个在UIH020020中,修改的是板坯缺号状态信息。这里为了回送板坯已板坯号和钢卷号做为联合主键
  381. getDao("mesdao").update("UIH020020_07.update", param4);
  382. // TBH02_COIL_COMM UPDATE
  383. PosParameter param8 = new PosParameter();
  384. param8.setWhereClauseParameter(0, "");
  385. param8.setWhereClauseParameter(1,"S");
  386. param8.setWhereClauseParameter(2,MISSNO_CAUSE_CD);
  387. param8.setWhereClauseParameter(3,sysDate);
  388. param8.setWhereClauseParameter(4, CoilNo);
  389. //改变板坯公共表中的板坯状态信息
  390. getDao("mesdao").update("NIH020030_COIL.update", param8);
  391. //调用存货异动点存储过程
  392. //ProduceFactory PD= new ProduceFactory();
  393. //PD.ErpDataCover("HSLAB", MSG_SLAB_NO,"11AZ","0","O","热轧加热炉","加回轧回");
  394. // 由计划修改,SendProg_NIF024060
  395. // PosParameter param3 = new PosParameter();
  396. // param3.setWhereClauseParameter(0, MSG_SLAB_NO );
  397. // param3.setWhereClauseParameter(1, CoilNo );
  398. // PosRowSet specMillVos = getDao("mesdao").find("NIH020020_SPEC_MILL.select", param3);
  399. // if (specMillVos.hasNext()) {
  400. // PosRow specMillROWs = specMillVos.next();
  401. // Number SLAB_EDT_SEQ = (Number)specMillROWs.getAttribute("SLAB_EDT_SEQ");
  402. //
  403. // PosParameter param5 = new PosParameter();
  404. // param5.setWhereClauseParameter(0, "C" );
  405. // param5.setWhereClauseParameter(1, MSG_SLAB_NO );
  406. // param5.setWhereClauseParameter(2, CoilNo );
  407. // getDao("mesdao").update("NIH020020_SPEC_MILL.update", param5);
  408. //
  409. // PosParameter param6 = new PosParameter();
  410. // param6.setWhereClauseParameter(0, "C" );
  411. // param6.setWhereClauseParameter(1, SLAB_EDT_SEQ );
  412. // getDao("mesdao").update("NIH020020_SPEC_MILL_D.update", param6);
  413. //
  414. // PosParameter param7 = new PosParameter();
  415. // param7.setWhereClauseParameter(0, "C" );
  416. // param7.setWhereClauseParameter(1, SLAB_EDT_SEQ );
  417. // getDao("mesdao").update("NIH020020_MILL_IDX.update", param7);
  418. // }
  419. //这里必须先调用求出状态,不然状态始终为3
  420. if(!RHF_STAT.equals("3")){
  421. //调用存货异动点存储过程
  422. ProduceFactory PD= new ProduceFactory();
  423. PD.ErpDataCover("HSLAB", MSG_SLAB_NO,"11AZ","0","O","热轧加热炉coil1","加回轧回");
  424. //Mill schedule cancel request
  425. SendProg_NIF024060( MSG_SLAB_NO);
  426. //调用品质存储过程
  427. logger.logDebug("XinSaveSlabReject---> NIB027010 TC sql call" );
  428. CallableStatement PlRtn = getDao("mesdao").getCallableStatement("NIH020020_NIB027010");
  429. logger.logDebug("XinSaveSlabReject---> NIB027010 TC try" );
  430. try {
  431. if(PlRtn != null) {
  432. PlRtn.setString(1,CoilNo);
  433. //新增加一个字段,为了废弃的时候使用
  434. PlRtn.setString(2,"S");
  435. PlRtn.registerOutParameter(3, java.sql.Types.VARCHAR);
  436. PlRtn.registerOutParameter(4, java.sql.Types.VARCHAR);
  437. PlRtn.execute();
  438. String sRetCode = PlRtn.getString(3);
  439. String sRetMsg = PlRtn.getString(4);
  440. logger.logDebug("XinSaveSlabReject---> NIB027010 TC PlRtn1:["+sRetCode+"]:"+ sRetMsg);
  441. } else {
  442. logger.logDebug("XinSaveSlabReject---> NIB027010 PlRtn2:"+PlRtn );
  443. }
  444. } catch (SQLException e) {
  445. throw new PosException(e.getMessage());
  446. }finally
  447. {
  448. if (PlRtn != null)
  449. {
  450. try
  451. {
  452. PlRtn.close();
  453. }
  454. catch (SQLException e)
  455. {
  456. logger.logWarn(e.getMessage(), e);
  457. logger.logDebug("XinSaveSlabReject---> NIB027010 SQLException:"+e );
  458. }
  459. }
  460. }
  461. }else{
  462. //吊销过一次的板坯,不能再次调用品质和进程
  463. logger.logDebug("XinSaveSlabReject---> 加热炉多次吊销时不允许调用品质和进程:"+RHF_STAT);
  464. }
  465. }else{
  466. logger.logDebug("XinSaveCoilReject 通过板坯号查询不到计划中的钢卷号信息 ");
  467. }
  468. }else{
  469. //走轧废处理的情况
  470. PosDateFormat dateFormat = new PosDateFormat();
  471. String sShift = dateFormat.getShiftT(MSG_MISSNO_OCR_DTIME);
  472. logger.logDebug("XinSaveCoilReject sShift:"+sShift );
  473. PosParameter param0 = new PosParameter();
  474. param0.setWhereClauseParameter(0,MSG_SLAB_NO );
  475. PosRowSet specMillVo = getDao("mesdao").find("NIH020040_SPEC_MILL.select", param0);
  476. String CoilNo = null;
  477. Number SlabEdtSeq = null;
  478. if(specMillVo.hasNext()) {
  479. PosRow specMillROW = specMillVo.next();
  480. CoilNo = (String)specMillROW.getAttribute("COIL_NO");
  481. SlabEdtSeq = (Number)specMillROW.getAttribute("SLAB_EDT_SEQ");
  482. }
  483. //如果出现多次吊销的情况,只在第一次的时候给予处理
  484. PosParameter param9 = new PosParameter();
  485. String sql9 = "select RHF_STAT from TBH02_REHEATFUR where slab_no = ? and coil_no = ? ";
  486. param9.setWhereClauseParameter(0, MSG_SLAB_NO);
  487. param9.setWhereClauseParameter(1, CoilNo);
  488. //这里做为是否调用品质的标志
  489. String RHF_STAT = null;
  490. PosRowSet rowset9 = getDao("mesdao").findByQueryStatement(sql9, param9);
  491. if(rowset9.hasNext()){
  492. PosRow row9 = rowset9.next();
  493. RHF_STAT = (String) row9.getAttribute("RHF_STAT");
  494. }
  495. if(!RHF_STAT.equals("3")){
  496. //调用存货异动点存储过程
  497. ProduceFactory PD= new ProduceFactory();
  498. PD.ErpDataCover("HSLAB", MSG_SLAB_NO,"11AZ","0","O","热轧加热炉coil2","加回轧回");
  499. }
  500. PosParameter param1 = new PosParameter();
  501. param1.setWhereClauseParameter(0,MSG_SLAB_NO );
  502. PosRowSet rejCoilVo = getDao("mesdao").find("NIH020040_COIL_COMM.select", param1);
  503. PosParameter param2 = new PosParameter();
  504. if(rejCoilVo.hasNext())
  505. {
  506. param2.setWhereClauseParameter(0, "1");
  507. param2.setWhereClauseParameter(1, "5");
  508. param2.setWhereClauseParameter(2, MISSNO_CAUSE_CD);
  509. param2.setWhereClauseParameter(3, MSG_SLAB_NO);
  510. this.getDao("mesdao").update("NIH020040_COIL.update", param2);
  511. }
  512. else
  513. {
  514. param2.setValueParamter(0, MSG_SLAB_NO);
  515. param2.setValueParamter(1, CoilNo);
  516. param2.setValueParamter(2, "1");
  517. param2.setValueParamter(3, "5");
  518. param2.setValueParamter(4, MISSNO_CAUSE_CD);
  519. this.getDao("mesdao").insert("NIH020040_COIL.insert", param2);
  520. }
  521. //修改板坯公共表,726TL
  522. PosParameter param66 = new PosParameter();
  523. param66.setWhereClauseParameter(0, MSG_SLAB_NO);
  524. getDao("mesdao").update("UIH020020_08.update", param66);
  525. String SlabCurrProgCd = null;
  526. String SlabBefProgCd = null;
  527. String SlabOrdNo = null;
  528. String SlabOrdSeq = null;
  529. BigDecimal SlabWgt = null;
  530. PosParameter param3 = new PosParameter();
  531. param3.setWhereClauseParameter(0, MSG_SLAB_NO);
  532. PosRowSet slabVo = getDao("mesdao").find("NIH020030_SLAB.select", param3);
  533. if(slabVo.hasNext()) {
  534. PosRow slabROW = slabVo.next();
  535. SlabCurrProgCd = (String)slabROW.getAttribute("CUR_PROG_CD");
  536. SlabBefProgCd = (String)slabROW.getAttribute("BEF_PROG_CD");
  537. SlabOrdNo = (String)slabROW.getAttribute("ORD_NO");
  538. SlabOrdSeq = (String)slabROW.getAttribute("ORD_SEQ");
  539. SlabWgt = (BigDecimal)slabROW.getAttribute("SLAB_WGT");
  540. }
  541. if (SlabEdtSeq != null) {
  542. PosParameter param4 = new PosParameter();
  543. param4.setWhereClauseParameter(0, "C" );
  544. param4.setWhereClauseParameter(1, MSG_SLAB_NO );
  545. param4.setWhereClauseParameter(2, CoilNo );
  546. getDao("mesdao").update("NIH020020_SPEC_MILL.update", param4);
  547. PosParameter param5 = new PosParameter();
  548. param5.setWhereClauseParameter(0, "C" );
  549. param5.setWhereClauseParameter(1, SlabEdtSeq );
  550. getDao("mesdao").update("NIH020020_SPEC_MILL_D.update", param5);
  551. PosParameter param6 = new PosParameter();
  552. param6.setWhereClauseParameter(0, "C" );
  553. param6.setWhereClauseParameter(1, SlabEdtSeq );
  554. getDao("mesdao").update("NIH020020_MILL_IDX.update", param6);
  555. }
  556. //调用存货异动点存储过程
  557. //ProduceFactory PD= new ProduceFactory();
  558. //PD.ErpDataCover("HSLAB", MSG_SLAB_NO,"11AZ","0","O","热轧加热炉","加回轧回");
  559. SendProg_NIE012070( MSG_SLAB_NO ,SlabOrdNo,SlabOrdSeq,SlabCurrProgCd,SlabBefProgCd,"TM",SlabWgt );
  560. SendProg_NIE012080();
  561. logger.logDebug("XinSaveCoilReject---> NIB027010 TC sql call" );
  562. CallableStatement PlRtn = getDao("mesdao").getCallableStatement("NIH020020_NIB027010");
  563. logger.logDebug("XinSaveCoilReject---> NIB027010 TC try" );
  564. try {
  565. if(PlRtn != null) {
  566. PlRtn.setString(1,CoilNo);
  567. //新增加一个字段,为了废弃的时候使用
  568. PlRtn.setString(2,"C");
  569. PlRtn.registerOutParameter(3, java.sql.Types.VARCHAR);
  570. PlRtn.registerOutParameter(4, java.sql.Types.VARCHAR);
  571. PlRtn.execute();
  572. String sRetCode = PlRtn.getString(3);
  573. String sRetMsg = PlRtn.getString(4);
  574. logger.logDebug("XinSaveCoilReject---> NIB027010 TC PlRtn1:["+sRetCode+"]:"+ sRetMsg);
  575. } else {
  576. logger.logDebug("XinSaveCoilReject---> NIB027010 PlRtn2:"+PlRtn );
  577. }
  578. } catch (SQLException e) {
  579. throw new PosException(e.getMessage());
  580. }finally
  581. {
  582. if (PlRtn != null)
  583. {
  584. try
  585. {
  586. PlRtn.close();
  587. }
  588. catch (SQLException e)
  589. {
  590. logger.logWarn(e.getMessage(), e);
  591. logger.logDebug("XinSaveCoilReject---> NIB027010 SQLException:"+e );
  592. }
  593. }
  594. }
  595. }
  596. return PosBizControlConstants.SUCCESS;
  597. }
  598. public void SendProg_NIE012070(String MatNo,String sOrdNo,String sOrdSeq,String sProgCd,String sBefProgCd,String sKind,BigDecimal wgt )
  599. {
  600. logger.logDebug("XinSaveCcmResult SendProg_NIE012070 " );
  601. PosContext context = new PosContext();
  602. PosMessage message = new PosMESMessageImpl();
  603. String TcId = "NIE012070";
  604. message.setTCID(TcId);
  605. message.setObject("MSG_ID",TcId);
  606. message.setObject("BEF_ORD_NO",null);
  607. message.setObject("BEF_ORD_SEQ",null);
  608. message.setObject("ORD_NO",sOrdNo);
  609. message.setObject("ORD_SEQ",sOrdSeq);
  610. message.setObject("BEF_PROG_CD",sBefProgCd);
  611. message.setObject("PROG_CD",sProgCd);
  612. message.setObject("MAT_TYPE",sKind);
  613. message.setObject("MAT_NO",MatNo);
  614. message.setObject("WGT", wgt );
  615. message.setObject("PGMID","XinSaveCoilRject");
  616. message.setObject("REG_ID", "MILL L2");
  617. context.setMessage(message);
  618. this.processComponent(PosConstants.CREATE_MESSAGE, context);
  619. String transactionCode = context.getMessage().getTC();
  620. message.setTCID(TcId);
  621. String serviceName = "NIE012070";
  622. String SERVICE_POSTFIX = "-service";
  623. context.put(PosBizControlConstants.SERVICE_NAME, serviceName + SERVICE_POSTFIX);
  624. context.setMessage(message);
  625. PosBizControlIF controller = PosBizProvider.getController();
  626. controller.doSubController(context,false);
  627. }
  628. public void SendProg_NIE012080()
  629. {
  630. PosContext context = new PosContext();
  631. PosMessage message = new PosMESMessageImpl();
  632. String TcId = "NIE012080";
  633. message.setTCID(TcId);
  634. message.setObject("MSG_ID",TcId);
  635. message.setObject("AA",null);
  636. context.setMessage(message);
  637. this.processComponent(PosConstants.CREATE_MESSAGE, context);
  638. String transactionCode = context.getMessage().getTC();
  639. message.setTCID(TcId);
  640. String serviceName = "NIE012080";
  641. String SERVICE_POSTFIX = "-service";
  642. context.put(PosBizControlConstants.SERVICE_NAME, serviceName + SERVICE_POSTFIX);
  643. context.setMessage(message);
  644. PosBizControlIF controller = PosBizProvider.getController();
  645. controller.doSubController(context,false);
  646. }
  647. public void SendProg_NIF024060(String SlabNo )
  648. {
  649. logger.logDebug("PosSaveMissionNo SendProg_NIF024060 " );
  650. PosContext context = new PosContext();
  651. PosMessage message = new PosMESMessageImpl();
  652. String TcId = "NIF024060";
  653. message.setTCID(TcId);
  654. message.setObject("MSG_ID",TcId);
  655. message.setObject("TYPE","C");
  656. message.setObject("FROM",SlabNo);
  657. message.setObject("TO",SlabNo);
  658. message.setObject("REG_ID","RHF L2");
  659. context.setMessage(message);
  660. this.processComponent(PosConstants.CREATE_MESSAGE, context);
  661. String transactionCode = context.getMessage().getTC();
  662. message.setTCID(TcId);
  663. String serviceName = "NIF024060";
  664. String SERVICE_POSTFIX = "-service";
  665. context.put(PosBizControlConstants.SERVICE_NAME, serviceName + SERVICE_POSTFIX);
  666. context.setMessage(message);
  667. PosBizControlIF controller = PosBizProvider.getController();
  668. controller.doSubController(context,false);
  669. }
  670. }