package xin.glue.ui.B.B02; import java.math.BigDecimal; import java.sql.CallableStatement; import java.sql.SQLException; import org.apache.commons.lang.StringUtils; import com.posdata.glue.PosException; import com.posdata.glue.biz.activity.PosActivity; import com.posdata.glue.biz.constants.PosBizControlConstants; import com.posdata.glue.biz.control.PosBizProvider; import com.posdata.glue.context.PosContext; import com.posdata.glue.dao.PosGenericDao; import com.posdata.glue.dao.vo.PosParameter; import com.posdata.glue.dao.vo.PosRow; import com.posdata.glue.dao.vo.PosRowSet; import com.posdata.glue.msg.PosMESMessageImpl; import com.posdata.glue.msg.PosMessage; /** * * @Description 板坯缺陷录入与措施{界面ID:UIB020220} * @author 梅贵平{meiguiping} * @date 2008-11-12 上午11:38:23 * @JDK Version jdk1.4.2 */ public class SaveSlabDefectMeasure extends PosActivity { public String runActivity(PosContext context) { PosGenericDao dao = this.getDao("mesdao"); PosRowSet rowset = null; PosRow row = null; CallableStatement cstm = null; //add //modify String[] SlabDec = (String[])context.get("SlabDec");//板坯改判标记 //modify String OSFL = ""; String MILLFL = ""; //modify try { PosParameter param = null; // MILLLvlCan MC = new MILLLvlCan();//发送信息到进程管理 String[] SLAB_NO = (String[])context.get("SLAB_NO"); //板坯号 String[] EXTSHAPE_GRD = (String[])context.get("EXTSHAPE_GRD");//板坯外观等级 String[] SF_METHOD = (String[])context.get("SF_METHOD"); //板坯修整方法 String[] STL_GRD = (String[])context.get("STL_GRD"); //厂内钢号 String[] BEF_STL_GRD = (String[])context.get("BEF_STL_GRD"); //原厂内钢号 String[] SLAB_RT = (String[])context.get("SLAB_RT");//板坯去向(生产线) String[] SLAB_STAT = (String[])context.get("SLAB_STAT");//库存状态 String[] CRK1 =(String[])context.get("CRK1");//缺陷1(包括缺陷代码+上表面T或下表面B) String[] CRK2 =(String[])context.get("CRK2");//缺陷2(包括缺陷代码+上表面T或下表面B) String[] CRK3 =(String[])context.get("CRK3");//缺陷3(包括缺陷代码+上表面T或下表面B) String[] CRK4 =(String[])context.get("CRK4");//缺陷4(包括缺陷代码+上表面T或下表面B) String[] CRK5 =(String[])context.get("CRK5");//缺陷5(包括缺陷代码+上表面T或下表面B) String[] CRK6 =(String[])context.get("CRK6");//缺陷6(包括缺陷代码+上表面T或下表面B) String[] CRK7 =(String[])context.get("CRK7");//缺陷7(包括缺陷代码+上表面T或下表面B) String[] CRK8 =(String[])context.get("CRK8");//缺陷8(包括缺陷代码+上表面T或下表面B) String[] CRK9 =(String[])context.get("CRK9");//缺陷9(包括缺陷代码+上表面T或下表面B) String[] CRK10=(String[])context.get("CRK10");//缺陷10(包括缺陷代码+上表面T或下表面B) String[] spotCheck = (String[])context.get("SPOT_CHECK_REMARK");//抽查备注 String[] copingCheck = (String[])context.get("COPING_REMARK");//修磨备注 String[] qbThick = (String[])context.get("qbThick");//全剥厚度 String[] rowStatus4 = (String[])context.get("rowStatus4"); //针对两个备注 String[]EXTSHAPE_GRD1 = (String[])context.get("EXTSHAPE_GRD1");//用于比较修改前和修改后的 String[]SF_METHOD1 = (String[])context.get("SF_METHOD1");//用于比较修改前和修改后的 String[]V_REG_ID = (String[])context.get("REG_NM");//登录人 //精整 String[]rowStatus3 = (String[])context.get("rowStatus3"); //针对精整 String[]CHK = (String[])context.get("CHK"); // String[]SM_CFNM = (String[])context.get("SM_CFNM");//待精整、精整、或精整完成 String[] rowStatus = (String[])context.get("rowStatus"); String[]rowStatus2 = (String[])context.get("rowStatus2"); //针对外观检验 int j =0; if(rowStatus != null && SlabDec == null) { for(int i=0; i < rowStatus.length; i++) { if("Y".equals(rowStatus4[i]) || (StringUtils.isBlank(spotCheck[i]) || StringUtils.isBlank(copingCheck[i])))//判断是否录入了备注还是删除了备注 { String sql1 = "SELECT NVL(T1.V_COUNT,0) V_COUNT, T2.HOT_ROLL_REQ_DATE FROM TBG02_SLAB_COMM T " + "LEFT JOIN (SELECT SUM(1) V_COUNT, TT.BILLET_XN FROM SCC_BOARD_STEELPLAN_LOG TT " + " GROUP BY TT.BILLET_XN) T1 ON T.DSN_SLAB_NO = T1.BILLET_XN " + "LEFT JOIN TBF01_SPEC_SLAB T2 ON T.PLAN_SLAB_NO = T2.SLAB_MANA_NO " + " WHERE T.SLAB_NO = ?"; param = new PosParameter(); param.setWhereClauseParameter(0, SLAB_NO[i]); rowset = dao.findByQueryStatement(sql1, param); if (rowset.hasNext()) { row = rowset.next(); String HOT_ROLL_REQ_DATE = (String)row.getAttribute("HOT_ROLL_REQ_DATE"); int V_COUNT = ((BigDecimal)row.getAttribute("V_COUNT")).intValue(); if("JH".equals(HOT_ROLL_REQ_DATE) || V_COUNT > 0){ return PosBizControlConstants.SUCCESS; } } int flag = 0; String sql = "select * from TBZ01_REMARK_COMM where SLAB_NO = ?"; param = new PosParameter(); param.setWhereClauseParameter(0, SLAB_NO[i]); rowset = this.getDao("mesdao").findByQueryStatement(sql,param); if(rowset.hasNext()){ row = rowset.next(); String COPING_REMARK = row.getAttribute("COPING_REMARK") == null?"":(String) row.getAttribute("COPING_REMARK"); if(!COPING_REMARK.contains("修磨好") && !COPING_REMARK.contains("全剥已好")){ if(copingCheck[i].contains("全剥已好")) { param = new PosParameter(); param.setWhereClauseParameter(0, qbThick[0]); param.setWhereClauseParameter(1, qbThick[0]); param.setWhereClauseParameter(2, SLAB_NO[i]); dao.update("UIB020220_08.UPDATE",param); flag = 1; }else if(copingCheck[i].contains("修磨好")){ param = new PosParameter(); param.setWhereClauseParameter(0, SLAB_NO[i]); dao.update("UIB020220_07.UPDATE",param); flag = 1; } } param = new PosParameter(); param.setWhereClauseParameter(0, copingCheck[i]); param.setWhereClauseParameter(1, spotCheck[i]); param.setWhereClauseParameter(2, V_REG_ID[0]); param.setWhereClauseParameter(3, SLAB_NO[i]); dao.update("UIB020220_03.UPDATE", param); }else{ if(StringUtils.isNotBlank(spotCheck[i]) || StringUtils.isNotBlank(copingCheck[i])){ param = new PosParameter(); param.setWhereClauseParameter(0, SLAB_NO[i]); param.setWhereClauseParameter(1, copingCheck[i]); param.setWhereClauseParameter(2, spotCheck[i]); param.setWhereClauseParameter(3, V_REG_ID[0]); dao.update("UIB020220_03.INSERT", param); if(copingCheck[i].contains("全剥已好")) { param = new PosParameter(); param.setWhereClauseParameter(0, qbThick[0]); param.setWhereClauseParameter(1, qbThick[0]); param.setWhereClauseParameter(2, SLAB_NO[i]); dao.update("UIB020220_08.UPDATE",param); flag = 1; }else if(copingCheck[i].contains("修磨好")){ param = new PosParameter(); param.setWhereClauseParameter(0, SLAB_NO[i]); dao.update("UIB020220_07.UPDATE",param); flag = 1; } } } /*财务数据上抛*/ if(flag == 1){ cstm = null; try { cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL"); cstm.setString(1, SLAB_NO[i]); cstm.setString(2, "11AA"); cstm.setString(3, "N"); cstm.setString(4, "修磨磅重核减"); cstm.setString(5, V_REG_ID[0]); cstm.registerOutParameter(6, java.sql.Types.VARCHAR); cstm.execute(); String err = cstm.getString(6); /*if(!org.apache.commons.lang.StringUtils.isBlank(cstm.getString(6))){ context.put("MESSAGES","数据上传失败:" + err); return PosBizControlConstants.SUCCESS; }*/ }catch(Exception ex){ ex.printStackTrace(); /*context.put("MESSAGES","Exception:" + ex.getMessage()); return PosBizControlConstants.SUCCESS;*/ } finally{ if(cstm != null){ try{ cstm.close(); }catch(Exception e) { e.printStackTrace(); } } } } } if("Y".equals(rowStatus3[i]))//判断是否操作了精整 { if("D".equals(SF_METHOD[i]))//待精整 { param = new PosParameter(); param.setWhereClauseParameter(0, V_REG_ID[0]); param.setWhereClauseParameter(1, SLAB_NO[i]); dao.update("UIB020220_04.UPDATE", param); } else if("E".equals(SF_METHOD[i]))//精整完成 { param = new PosParameter(); param.setWhereClauseParameter(0, V_REG_ID[0]); param.setWhereClauseParameter(1, SLAB_NO[i]); dao.update("UIB020220_06.UPDATE", param); } else//精整操作 { param = new PosParameter(); param.setWhereClauseParameter(0, V_REG_ID[0]); param.setWhereClauseParameter(1, SF_METHOD[0]); param.setWhereClauseParameter(2, SLAB_NO[i]); dao.update("UIB020220_05.UPDATE", param); } } if("Y".equals(rowStatus2[i])) { //外观判定 j = 0; param = new PosParameter(); param.setWhereClauseParameter(j++, EXTSHAPE_GRD[i]);//板坯外观等级 param.setWhereClauseParameter(j++, CRK1[i].length()==3?CRK1[i].substring(0, 2):"");//取得前两位 param.setWhereClauseParameter(j++, CRK1[i].length()==3?CRK1[i].substring(2):"");//取得第三位 param.setWhereClauseParameter(j++, CRK2[i].length()==3?CRK2[i].substring(0, 2):"");//取得前两位 param.setWhereClauseParameter(j++, CRK2[i].length()==3?CRK2[i].substring(2):"");//取得第三位 param.setWhereClauseParameter(j++, CRK3[i].length()==3?CRK3[i].substring(0, 2):"");//取得前两位 param.setWhereClauseParameter(j++, CRK3[i].length()==3?CRK3[i].substring(2):"");//取得第三位 param.setWhereClauseParameter(j++, CRK4[i].length()==3?CRK4[i].substring(0, 2):"");//取得前两位 param.setWhereClauseParameter(j++, CRK4[i].length()==3?CRK4[i].substring(2):"");//取得第三位 param.setWhereClauseParameter(j++, CRK5[i].length()==3?CRK5[i].substring(0, 2):"");//取得前两位 param.setWhereClauseParameter(j++, CRK5[i].length()==3?CRK5[i].substring(2):"");//取得第三位 param.setWhereClauseParameter(j++, CRK6[i].length()==3?CRK6[i].substring(0, 2):"");//取得前两位 param.setWhereClauseParameter(j++, CRK6[i].length()==3?CRK6[i].substring(2):"");//取得第三位 param.setWhereClauseParameter(j++, CRK7[i].length()==3?CRK7[i].substring(0, 2):"");//取得前两位 param.setWhereClauseParameter(j++, CRK7[i].length()==3?CRK7[i].substring(2):"");//取得第三位 param.setWhereClauseParameter(j++, CRK8[i].length()==3?CRK8[i].substring(0, 2):"");//取得前两位 param.setWhereClauseParameter(j++, CRK8[i].length()==3?CRK8[i].substring(2):"");//取得第三位 param.setWhereClauseParameter(j++, CRK9[i].length()==3?CRK9[i].substring(0, 2):"");//取得前两位 param.setWhereClauseParameter(j++, CRK9[i].length()==3?CRK9[i].substring(2):"");//取得第三位 param.setWhereClauseParameter(j++, CRK10[i].length()==3?CRK10[i].substring(0, 2):"");//取得前两位 param.setWhereClauseParameter(j++, CRK10[i].length()==3?CRK10[i].substring(2):"");//取得第三位 param.setWhereClauseParameter(j++, V_REG_ID[0]);//外观判定人 param.setWhereClauseParameter(j++, SLAB_NO[i]);//板坯号 dao.update("UIB020220_02.UPDATE", param); } //将外观判定记录保存到板坯历史表中 if("Y".equals(rowStatus2[i]) || "Y".equals(rowStatus3[i])) { try { StringBuffer desc = new StringBuffer(""); if(StringUtils.isNotEmpty(SF_METHOD[i])) { param = new PosParameter(); param.setWhereClauseParameter(0, SF_METHOD[i]); PosRowSet rowset1 = dao.find("UIB020220_09_SELECT", param); if(rowset1.hasNext()) { PosRow row1 = rowset1.next(); desc.append("精整:" + row1.getAttribute("SM_CFNM") + ";"); } } //查缺陷中文名 desc.append(findCRKCN((CRK1[i].length()==3?CRK1[i].substring(0, 2):""),CRK1[i].length()==3?CRK1[i].substring(2):"",1)); desc.append(findCRKCN((CRK2[i].length()==3?CRK2[i].substring(0, 2):""),CRK2[i].length()==3?CRK2[i].substring(2):"",2)); desc.append(findCRKCN((CRK3[i].length()==3?CRK3[i].substring(0, 2):""),CRK3[i].length()==3?CRK3[i].substring(2):"",3)); desc.append(findCRKCN((CRK4[i].length()==3?CRK4[i].substring(0, 2):""),CRK4[i].length()==3?CRK4[i].substring(2):"",4)); desc.append(findCRKCN((CRK5[i].length()==3?CRK5[i].substring(0, 2):""),CRK5[i].length()==3?CRK5[i].substring(2):"",5)); desc.append(findCRKCN((CRK6[i].length()==3?CRK6[i].substring(0, 2):""),CRK6[i].length()==3?CRK6[i].substring(2):"",6)); desc.append(findCRKCN((CRK7[i].length()==3?CRK7[i].substring(0, 2):""),CRK7[i].length()==3?CRK7[i].substring(2):"",7)); desc.append(findCRKCN((CRK8[i].length()==3?CRK8[i].substring(0, 2):""),CRK8[i].length()==3?CRK8[i].substring(2):"",8)); desc.append(findCRKCN((CRK9[i].length()==3?CRK9[i].substring(0, 2):""),CRK9[i].length()==3?CRK9[i].substring(2):"",9)); desc.append(findCRKCN((CRK10[i].length()==3?CRK10[i].substring(0, 2):""),CRK10[i].length()==3?CRK10[i].substring(2):"",10)); param = new PosParameter(); param.setValueParamter(0, EXTSHAPE_GRD[i]);//外观等级 param.setValueParamter(1, V_REG_ID[0]);//外观判定人 param.setValueParamter(2, desc.toString());//判定记录 param.setValueParamter(3, SLAB_NO[i]);//板坯号 dao.insert("UIB020220_HIS.INSERT", param); } catch (Exception e) { logger.logWarn(e.getMessage(), e); } } if(SlabDec != null) { //若板坯外观等级不为1或者板坯修整方式不为空时,调用存储过程NIB020221发送到进程管理 if(!EXTSHAPE_GRD1[i].equals(EXTSHAPE_GRD[i]) || !SF_METHOD1[i].equals(SF_METHOD[i] ) || "Y".equals(SlabDec[0]) ) { if(!EXTSHAPE_GRD1[i].equals(EXTSHAPE_GRD[i]) || !SF_METHOD1[i].equals(SF_METHOD[i] )) { cstm = dao.getCallableStatement("UIB020220_01.CALLSTATEMENT"); cstm.setString(1, SLAB_NO[i]); cstm.registerOutParameter(2, java.sql.Types.VARCHAR); cstm.registerOutParameter(3, java.sql.Types.VARCHAR); cstm.registerOutParameter(4, java.sql.Types.VARCHAR); cstm.registerOutParameter(5, java.sql.Types.VARCHAR); cstm.execute(); OSFL = cstm.getString(2); MILLFL = cstm.getString(3); // System.out.println("###############################========== OSFL: "+OSFL +" =======MILLFL: "+MILLFL); // if("Y".equals(OSFL) || "Y".equals(MILLFL))//发送信息到进程管理 } if("Y".equals(OSFL) || "Y".equals(SlabDec[0]) ) { param = new PosParameter(); param.setWhereClauseParameter(0, SLAB_NO[i]); rowset = dao.find("UIB020220_02.SELECT", param); while(rowset.hasNext()) { row = rowset.next(); String V_ORD_NO = row.getAttribute("ORD_NO")==null?"":row.getAttribute("ORD_NO").toString(); String V_ORD_SEQ = row.getAttribute("ORD_SEQ")==null?"":row.getAttribute("ORD_SEQ").toString(); long V_SLAB_WGT = Long.parseLong(row.getAttribute("SLAB_WGT")==null?"0":row.getAttribute("SLAB_WGT").toString()); String V_BEF_PROG = row.getAttribute("BEF_PROG_CD")==null?"":row.getAttribute("BEF_PROG_CD").toString(); String V_CUR_PROG = row.getAttribute("CUR_PROG_CD")==null?"":row.getAttribute("CUR_PROG_CD").toString(); NIE012070_CALL(V_ORD_NO, V_ORD_SEQ, SLAB_NO[i], V_SLAB_WGT, V_BEF_PROG,V_CUR_PROG,"UIB020220", V_REG_ID[0]); NIE012080_CALL(); }//while end //add by sunjiawang //如果已经编制到轧制计划且外观不合格则取消该对象的轧制计划 //add ||"Y".equals(SlabDec[0] 改判也需要取消轧制计划 if( "Y".equals(MILLFL) && ("1".equals(EXTSHAPE_GRD1[i]) || "Y".equals(SlabDec[0]))) { NIF024060_CALL(SLAB_NO[i] , V_REG_ID[0]); } }// if end }//if end }//SlabDec != null end }//for end }//if end // System.out.println("#######################################"+ SlabDec + "##############"+ rowStatus); ///板坯改判,已废弃 // String[] SlabDec = (String[])context.get("SlabDec");//板坯改判标记 String[] ORD_FL = (String[])context.get("ORD_FL");//余才区分 if(SlabDec != null && "Y".equals(SlabDec[0]) && rowStatus != null) { cstm = dao.getCallableStatement("UIB020220_02.CALLSTATEMENT"); for(int i=0; i < rowStatus.length; i++) { param = new PosParameter(); param.setWhereClauseParameter(0, STL_GRD[i]); //厂内钢号 param.setWhereClauseParameter(1, BEF_STL_GRD[i]); //原厂内钢号 param.setWhereClauseParameter(2, V_REG_ID[0]); param.setWhereClauseParameter(3, SLAB_NO[i]); dao.update("UIB020220_03.UPDATE" , param); j = 0; cstm.setString(1, SLAB_NO[i]);//需要改判的板坯号 cstm.setString(2, ORD_FL[i]); cstm.registerOutParameter(3, java.sql.Types.VARCHAR); cstm.registerOutParameter(4, java.sql.Types.VARCHAR); cstm.execute(); } } }catch(Exception ex){ logger.logError(ex.getMessage() , ex); }finally{ if (cstm != null) { try { cstm.close(); } catch (SQLException e) { logger.logWarn(e.getMessage(), e); } } } return PosBizControlConstants.SUCCESS; } //查缺陷中文名 public String findCRKCN(String crk,String t,int i) { if(StringUtils.isNotEmpty(crk)) { PosParameter param = new PosParameter(); param.setWhereClauseParameter(0, crk); PosRowSet rowset = this.getDao("mesdao").find("UIB020220_08_SELECT", param); if(rowset.hasNext()) { PosRow row1 = rowset.next(); return "缺陷" + i + ":" + row1.getAttribute("SM_CFNM") + t + ";"; } } return ""; } public PosContext NIE012070_CALL(String V_ORD_NO, String V_ORD_SEQ, String V_SLAB_NO, long V_SLAB_WGT, String V_BEF_PROG ,String V_CUR_PROG , String V_PGMID , String V_REG_ID) { PosContext context = new PosContext(); PosMessage message = new PosMESMessageImpl(); // String TcId = "NIE012070"; message.setTCID(TcId); message.setObject("MSG_ID", TcId); message.setObject("BEF_ORD_NO", ""); message.setObject("BEF_ORD_SEQ", ""); message.setObject("ORD_NO", V_ORD_NO); message.setObject("ORD_SEQ", V_ORD_SEQ); message.setObject("BEF_PROG_CD", V_BEF_PROG); message.setObject("PROG_CD", V_CUR_PROG); message.setObject("MAT_TYPE", "TM"); message.setObject("MAT_NO", V_SLAB_NO); message.setObject("WGT", new BigDecimal(V_SLAB_WGT)); message.setObject("PGMID", V_PGMID); message.setObject("REG_ID", V_REG_ID); context.setMessage(message); message.setTCID(TcId); String SERVICE_POSTFIX = "-service"; context.put(PosBizControlConstants.SERVICE_NAME, TcId + SERVICE_POSTFIX); PosBizProvider.getController().doSubController(context, false); String SERVICE_ERR_MSG = (String) context.get("SERVICE_ERR_MSG"); if (SERVICE_ERR_MSG != null) { throw new PosException(SERVICE_ERR_MSG); } return context; } public PosContext NIE012080_CALL() { PosContext context = new PosContext(); PosMessage message = new PosMESMessageImpl(); String TcId = "NIE012080"; message.setTCID(TcId); message.setObject("MSG_ID", TcId); message.setObject("AA", ""); context.setMessage(message); message.setTCID(TcId); String SERVICE_POSTFIX = "-service"; context.put(PosBizControlConstants.SERVICE_NAME, TcId + SERVICE_POSTFIX); PosBizProvider.getController().doSubController(context, false); String SERVICE_ERR_MSG = (String) context.get("SERVICE_ERR_MSG"); if (SERVICE_ERR_MSG != null) { throw new PosException(SERVICE_ERR_MSG); } return context; } public PosContext NIF024060_CALL(String V_SLAB_NO, String V_REG_ID) { PosContext context = new PosContext(); PosMessage message = new PosMESMessageImpl(); String TcId = "NIF024060"; message.setTCID(TcId); message.setObject("MSG_ID", TcId); message.setObject("TYPE", "M"); message.setObject("FROM" , V_SLAB_NO); message.setObject("TO" , V_SLAB_NO); message.setObject("REG_ID", V_REG_ID ); context.setMessage(message); message.setTCID(TcId); String SERVICE_POSTFIX = "-service"; context.put(PosBizControlConstants.SERVICE_NAME, TcId + SERVICE_POSTFIX); PosBizProvider.getController().doSubController(context, false); String SERVICE_ERR_MSG = (String) context.get("SERVICE_ERR_MSG"); if (SERVICE_ERR_MSG != null) { throw new PosException(SERVICE_ERR_MSG); } return context; } }