09eb0d0549ecd19a5ef7bb92bf908ffba369cbcd.svn-base 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  1. package xin.glue.ui.H.H02;
  2. import java.sql.CallableStatement;
  3. import java.sql.SQLException;
  4. import xin.glue.ui.common.ProduceFactory;
  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.biz.control.PosBizControlIF;
  9. import com.posdata.glue.biz.control.PosBizProvider;
  10. import com.posdata.glue.component.PosConstants;
  11. import com.posdata.glue.context.PosContext;
  12. import com.posdata.glue.dao.vo.PosParameter;
  13. import com.posdata.glue.dao.vo.PosRow;
  14. import com.posdata.glue.dao.vo.PosRowSet;
  15. import com.posdata.glue.msg.PosMESMessageImpl;
  16. import com.posdata.glue.msg.PosMessage;
  17. /*
  18. * desc:板坯缺号,修改,插入
  19. * author:王小炎
  20. * date:2008-10-7
  21. */
  22. public class PosSaveMissionNo extends PosActivity
  23. {
  24. public String runActivity(PosContext context)
  25. {
  26. // 从页面获取参数数据,供更新页面使用
  27. String[] slabNo = (String[])context.get("SLAB_NO");
  28. String[] coilNo = (String[])context.get("COIL_NO");
  29. String[] missionDtime = (String[])context.get("MISSNO_DTIME");
  30. String[] missionClf = (String[])context.get("MISSNO_CLF");
  31. String[] missionCauseCd = (String[])context.get("MISSNO_CAUSE_CD");
  32. String[] WkShift = (String[])context.get("WK_SHIFT3");
  33. String[] WkGroup = (String[])context.get("WK_GROUP3");
  34. String[] RegId = (String[])context.get("WK_EMP_NO3");
  35. //轧回宽度
  36. String[] MISSNO_WTH = (String[])context.get("MISSNO_WTH");
  37. //轧回厚度
  38. String[] MISSNO_THK = (String[])context.get("MISSNO_THK");
  39. //轧回板坯放入辊道位置
  40. String[] MISSNO_YARD = (String[])context.get("MISSNO_YARD");
  41. //炉前取消坯入库的垛位
  42. String[] MISSNO_SLAB = (String[])context.get("MISSNO_SLAB");
  43. //登陆用户名
  44. String[] REG_ID = (String[])context.get("REG_ID");
  45. //这里做为是否调用品质的标志
  46. String RHF_STAT = null;
  47. String MsgChk = null;
  48. logger.logInfo("PosSaveMissionNo slabNo[0] 1:("+slabNo[0]+")"+coilNo[0]);
  49. //这里判断板坯号与钢卷号是否在轧制计划中匹配,不匹配的话给予相应的提示
  50. PosParameter parama = new PosParameter();
  51. parama.setWhereClauseParameter(0,slabNo[0]);
  52. parama.setWhereClauseParameter(1,coilNo[0]);
  53. PosRowSet SpecMillVoa = getDao("mesdao").find("NIH020020_SPEC_MILL.select", parama);
  54. if (SpecMillVoa.hasNext()) {
  55. PosRow specMillROWa = SpecMillVoa.next();
  56. String SpecCoilNo = (String)specMillROWa.getAttribute("COIL_NO");
  57. if(SpecCoilNo.equals(coilNo[0]) && SpecCoilNo != null){
  58. //查询结果如果已经有值,则进行修改操作,否则插入
  59. String sql = "select * from TBH02_RHF_MISSNO where slab_no = ? AND coil_no = ?";
  60. PosParameter param1 = new PosParameter();
  61. param1.setWhereClauseParameter(0,slabNo[0] );
  62. param1.setWhereClauseParameter(1,coilNo[0] );
  63. PosRowSet rowset0 = getDao("mesdao").findByQueryStatement(sql, param1);
  64. PosParameter param3 = new PosParameter();
  65. PosParameter param2 = new PosParameter();
  66. if(rowset0.hasNext())
  67. {
  68. //如果是更新吊销实际,说明多次使用吊销
  69. RHF_STAT = "2";
  70. param3.setWhereClauseParameter(0,coilNo[0]);
  71. param3.setWhereClauseParameter(1,missionDtime[0]);
  72. param3.setWhereClauseParameter(2,missionClf[0]);
  73. param3.setWhereClauseParameter(3,missionCauseCd[0]);
  74. param3.setWhereClauseParameter(4,WkShift[0]);
  75. param3.setWhereClauseParameter(5,WkGroup[0]);
  76. param3.setWhereClauseParameter(6,RegId[0]);
  77. param3.setWhereClauseParameter(7,REG_ID[0]);
  78. param3.setWhereClauseParameter(8,slabNo[0]);
  79. param3.setWhereClauseParameter(9,coilNo[0]);
  80. getDao("mesdao").update("UIH020020_06.update", param3);
  81. }
  82. else
  83. {
  84. param2.setValueParamter(0,slabNo[0]);
  85. param2.setValueParamter(1,coilNo[0]);
  86. param2.setValueParamter(2,missionDtime[0]);
  87. param2.setValueParamter(3,missionClf[0]);
  88. param2.setValueParamter(4,missionCauseCd[0]);
  89. param2.setValueParamter(5,WkShift[0]);
  90. param2.setValueParamter(6,WkGroup[0]);
  91. param2.setValueParamter(7,RegId[0]);
  92. param2.setValueParamter(8,REG_ID[0]);
  93. getDao("mesdao").insert("UIH020020_05.insert",param2);
  94. }
  95. //更新tbg02_slab_comm表
  96. PosParameter param0 = new PosParameter();
  97. param0.setWhereClauseParameter(0, "2");
  98. param0.setWhereClauseParameter(1, missionClf[0]);
  99. param0.setWhereClauseParameter(2, missionCauseCd[0]);
  100. param0.setWhereClauseParameter(3, missionDtime[0]);
  101. param0.setWhereClauseParameter(4, RegId[0]);
  102. param0.setWhereClauseParameter(5, slabNo[0]);
  103. getDao("mesdao").update("UIH020020_04.update", param0);
  104. //调用存货异动点存储过程
  105. //ProduceFactory PD= new ProduceFactory();
  106. //PD.ErpDataCover("HSLAB", slabNo[0],"11AZ","0","O",RegId[0],"加回轧回");
  107. //如果出现多次吊销的情况,只在第一次的时候给予处理
  108. PosParameter param9 = new PosParameter();
  109. String sql9 = "select RHF_STAT from TBH02_REHEATFUR where slab_no = ? and coil_no = ? ";
  110. param9.setWhereClauseParameter(0, slabNo[0]);
  111. param9.setWhereClauseParameter(1, coilNo[0]);
  112. //这里做为是否调用品质的标志
  113. String slab_stat = null;
  114. PosRowSet rowset9 = getDao("mesdao").findByQueryStatement(sql9, param9);
  115. if(rowset9.hasNext()){
  116. PosRow row9 = rowset9.next();
  117. slab_stat = (String) row9.getAttribute("RHF_STAT");
  118. if(!slab_stat.equals("3")){
  119. //调用存货异动点存储过程
  120. ProduceFactory PD= new ProduceFactory();
  121. PD.ErpDataCover("HSLAB", slabNo[0],"11AZ","0","O","人工吊销","加回轧回");
  122. }
  123. }
  124. PosParameter param4 = new PosParameter();
  125. //TL 缺号,这里用板坯号和钢卷号作为联合主键。为了处理板坯回送的情况
  126. param4.setWhereClauseParameter(0, "3");
  127. param4.setWhereClauseParameter(1, slabNo[0]);
  128. param4.setWhereClauseParameter(2, coilNo[0]);
  129. getDao("mesdao").update("UIH020020_07.update", param4);
  130. // TBH02_COIL_COMM UPDATE
  131. PosParameter param8 = new PosParameter();
  132. param8.setWhereClauseParameter(0, "");
  133. param8.setWhereClauseParameter(1,"S");
  134. param8.setWhereClauseParameter(2,missionCauseCd[0]);
  135. param8.setWhereClauseParameter(3,missionDtime[0]);
  136. param8.setWhereClauseParameter(4, coilNo[0]);
  137. //改变板坯公共表中的板坯状态信息
  138. getDao("mesdao").update("NIH020030_COIL.update", param8);
  139. if(!MISSNO_WTH[0].equals("") && MISSNO_WTH[0] != null && !MISSNO_THK[0].equals("") && MISSNO_THK[0] != null){
  140. //只有轧回坯才能够改变板坯的宽度和厚度
  141. if(missionClf[0].equals("3")){
  142. //这里根据体积不变的原则来改变板坯长度
  143. //这里先要取出板坯的以前宽度、厚度、长度、再通过现在的宽度、厚度来反算长度
  144. Number slab_THK_TMP = null;
  145. Number slab_WTH_TMP = null;
  146. Number slab_LEN_TMP = null;
  147. String SlabLth = null;
  148. PosParameter paramx = new PosParameter();
  149. String sqlCalx = "select A.SLAB_THK,A.SLAB_WTH,A.SLAB_LEN from tbg02_slab_comm A WHERE A.SLAB_NO = ?";
  150. paramx.setWhereClauseParameter(0, slabNo[0]);
  151. PosRowSet VoX = getDao("mesdao").findByQueryStatement(sqlCalx, paramx);
  152. if(VoX.hasNext()){
  153. PosRow RowX = VoX.next();
  154. slab_THK_TMP = (Number) RowX.getAttribute("SLAB_THK");
  155. slab_WTH_TMP = (Number) RowX.getAttribute("SLAB_WTH");
  156. slab_LEN_TMP = (Number) RowX.getAttribute("SLAB_LEN");
  157. }
  158. String sqlCal = "SELECT TO_CHAR(ROUND((?*?*?)/(?*?),1)) COIL_LTH from dual ";
  159. PosParameter paramu = new PosParameter();
  160. paramu.setWhereClauseParameter(0,slab_THK_TMP);
  161. paramu.setWhereClauseParameter(1,slab_WTH_TMP);
  162. paramu.setWhereClauseParameter(2,slab_LEN_TMP);
  163. paramu.setWhereClauseParameter(3,MISSNO_WTH[0]);
  164. paramu.setWhereClauseParameter(4,MISSNO_THK[0]);
  165. PosRowSet calVo = getDao("mesdao").findByQueryStatement(sqlCal, paramu);
  166. if (calVo.hasNext()) {
  167. PosRow calROW = calVo.next();
  168. SlabLth = (String)calROW.getAttribute("COIL_LTH");
  169. logger.logInfo("PosSaveMissionNo 轧回板坯长度的计算公式:slab_thk*slab_wth*slab_len/coil_thk*coil_wth 单位为mm");
  170. logger.logInfo("PosSaveMissionNo 轧回板坯长度为空的情况下,长度为 :"+SlabLth);
  171. }
  172. //这里用来处理轧回板坯入库的相应信息
  173. PosParameter param88 = new PosParameter();
  174. param88.setWhereClauseParameter(0, MISSNO_WTH[0]);
  175. param88.setWhereClauseParameter(1, MISSNO_THK[0]);
  176. param88.setWhereClauseParameter(2, SlabLth);
  177. param88.setWhereClauseParameter(3, slabNo[0]);
  178. getDao("mesdao").update("UIH020020_09.update", param88);
  179. }
  180. }
  181. if(!MISSNO_YARD[0].equals("") && MISSNO_YARD[0] != null){
  182. //这里加回和轧回可以录入相应的滚道位置
  183. if(missionClf[0].equals("2") || missionClf[0].equals("3")){
  184. PosParameter param77 = new PosParameter();
  185. param77.setWhereClauseParameter(0, slabNo[0]);
  186. param77.setWhereClauseParameter(1, RegId[0]);
  187. param77.setWhereClauseParameter(2, MISSNO_YARD[0]);
  188. getDao("mesdao").update("UIH020020_10.update", param77);
  189. }
  190. }
  191. //这里把炉前取消的坯子录入临时垛位
  192. if(MISSNO_SLAB[0] != null && !MISSNO_SLAB[0].equals("")){
  193. //只有炉前取消的坯子可以入临时垛位
  194. if(missionClf[0].equals("1")){
  195. PosParameter param99 = new PosParameter();
  196. param99.setWhereClauseParameter(0, slabNo[0]);
  197. param99.setWhereClauseParameter(1, RegId[0]);
  198. param99.setWhereClauseParameter(2, MISSNO_SLAB[0].substring(0, 3));
  199. param99.setWhereClauseParameter(3, MISSNO_SLAB[0].substring(3, MISSNO_SLAB[0].length()));
  200. getDao("mesdao").update("UIH020020_11.update", param99);
  201. }
  202. }
  203. //调用存货异动点存储过程
  204. //ProduceFactory PD= new ProduceFactory();
  205. //PD.ErpDataCover("HSLAB", slabNo[0],"11AZ","0","O",RegId[0],"加回轧回");
  206. //与NIH同步,改变轧制计划内容
  207. //由计划修改,SendProg_NIF024060
  208. // PosParameter param33 = new PosParameter();
  209. // param33.setWhereClauseParameter(0,slabNo[0]);
  210. // param33.setWhereClauseParameter(1,coilNo[0]);
  211. // PosRowSet specMillVo = getDao("mesdao").find("NIH020020_SPEC_MILL.select", param33);
  212. // if (specMillVo.hasNext()) {
  213. // PosRow specMillROW = specMillVo.next();
  214. // Number SLAB_EDT_SEQ = (Number)specMillROW.getAttribute("SLAB_EDT_SEQ");
  215. //
  216. // PosParameter param5 = new PosParameter();
  217. // param5.setWhereClauseParameter(0, "C" );
  218. // param5.setWhereClauseParameter(1, slabNo[0] );
  219. // param5.setWhereClauseParameter(2, coilNo[0] );
  220. // getDao("mesdao").update("NIH020020_SPEC_MILL.update", param5);
  221. //
  222. // PosParameter param6 = new PosParameter();
  223. // param6.setWhereClauseParameter(0, "C" );
  224. // param6.setWhereClauseParameter(1, SLAB_EDT_SEQ );
  225. // getDao("mesdao").update("NIH020020_SPEC_MILL_D.update", param6);
  226. //
  227. // PosParameter param7 = new PosParameter();
  228. // param7.setWhereClauseParameter(0, "C" );
  229. // param7.setWhereClauseParameter(1, SLAB_EDT_SEQ );
  230. // getDao("mesdao").update("NIH020020_MILL_IDX.update", param7);
  231. // }
  232. if(RHF_STAT == null){
  233. //这里是清楚轧制计划中的相关板坯
  234. SendProg_NIF024060( slabNo[0] );
  235. //调用品质的存储过程
  236. logger.logInfo("PosSaveMissionNo---> NIB027010 TC sql call" );
  237. CallableStatement PlRtn = getDao("mesdao").getCallableStatement("NIH020020_NIB027010");
  238. logger.logInfo("PosSaveMissionNo---> NIB027010 TC try" );
  239. try {
  240. if(PlRtn != null) {
  241. PlRtn.setString(1,coilNo[0]);
  242. //新增加一个字段,为了废弃的时候使用
  243. PlRtn.setString(2,"S");
  244. PlRtn.registerOutParameter(3, java.sql.Types.VARCHAR);
  245. PlRtn.registerOutParameter(4, java.sql.Types.VARCHAR);
  246. PlRtn.execute();
  247. String sRetCode = PlRtn.getString(3);
  248. String sRetMsg = PlRtn.getString(4);
  249. logger.logInfo("PosSaveMissionNo---> NIB027010 TC PlRtn1:["+sRetCode+"]:"+ sRetMsg);
  250. } else {
  251. logger.logInfo("PosSaveMissionNo---> NIB027010 PlRtn2:"+PlRtn );
  252. }
  253. } catch (SQLException e) {
  254. throw new PosException(e.getMessage());
  255. }finally
  256. {
  257. if (PlRtn != null)
  258. {
  259. try
  260. {
  261. PlRtn.close();
  262. }
  263. catch (SQLException e)
  264. {
  265. logger.logWarn(e.getMessage(), e);
  266. logger.logInfo("PosSaveMissionNo---> NIB027010 SQLException:"+e );
  267. }
  268. }
  269. }
  270. }else{
  271. //吊销过一次的板坯,不能再次调用品质和进程
  272. logger.logInfo("PosSaveMissionNo---> 加热炉多次吊销时不允许调用品质和进程:"+RHF_STAT);
  273. }
  274. }else{
  275. logger.logInfo("PosSaveMissionNo Coil_No_Spec 1:("+SpecCoilNo+")::::"+coilNo[0]);
  276. //这里出现的异常情况是板坯号与钢卷号不匹配
  277. String vtemp="MissionNoPart";
  278. context.put("rs", vtemp);
  279. }
  280. }else{
  281. logger.logInfo("PosSaveMissionNo Failed ");
  282. MsgChk = "NOT";
  283. context.put("MsgChk",MsgChk);
  284. }
  285. return PosBizControlConstants.SUCCESS;
  286. }
  287. public void SendProg_NIF024060(String SlabNo )
  288. {
  289. logger.logInfo("PosSaveMissionNo SendProg_NIF024060 " );
  290. PosContext context = new PosContext();
  291. PosMessage message = new PosMESMessageImpl();
  292. String TcId = "NIF024060";
  293. message.setTCID(TcId);
  294. message.setObject("MSG_ID",TcId);
  295. message.setObject("TYPE","C");
  296. message.setObject("FROM",SlabNo);
  297. message.setObject("TO",SlabNo);
  298. message.setObject("REG_ID","UIH020020");
  299. message.setTCID(TcId);
  300. context.setMessage(message);
  301. // this.processComponent(PosConstants.CREATE_MESSAGE, context);
  302. // String transactionCode = context.getMessage().getTC();
  303. String serviceName = "NIF024060";
  304. String SERVICE_POSTFIX = "-service";
  305. context.put(PosBizControlConstants.SERVICE_NAME, serviceName + SERVICE_POSTFIX);
  306. // context.setMessage(message);
  307. PosBizControlIF controller = PosBizProvider.getController();
  308. controller.doSubController(context,false);
  309. }
  310. }