package xin.glue.ui.G.G04; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.sql.CallableStatement; import java.util.List; import java.util.Map; 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.PosBizControlIF; import com.posdata.glue.biz.control.PosBizProvider; import com.posdata.glue.component.PosConstants; import com.posdata.glue.context.PosContext; 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; public class XINComplusMove extends PosActivity { public String runActivity(PosContext context) { String[] rowStatus = (String[]) context.get("rowStatus"); String[] CHK = (String[]) context.get("CHK"); //选择 String[] SLAB_NO = (String[]) context.get("SLAB_NO"); //板坯号 String[] YARD_ADDR = (String[]) context.get("YARD_ADDR"); //现在库位置 String[] FROM_ADDR = (String[]) context.get("CUR_LOAD_LOC"); //现在库位置 String[] TO_ADDR = (String[]) context.get("TO_YARD"); //目的位置 String[] MILL_STAT = (String[]) context.get("MILL_SCH_STAT"); //钢号 String[] CUR_PROG_CD = (String[]) context.get("CUR_PROG_CD"); //胚料进程 String[] SLAB_STAT = (String[]) context.get("SLAB_STAT"); //胚料状态 String[] MOVE_EMP_NM = (String[]) context.get("MOVE_EMP_NM"); //操作人 YardHandle yardHandl = new YardHandle(getDao("mesdao")); for(int i=0;i< rowStatus.length;i++){ if(!(CHK[i].equals("Y")))continue; if(MILL_STAT[i].equals("A7T")){ context.put("MESSAGES", " 坯料已经装炉,不能再入库! "); return PosBizControlConstants.SUCCESS; } if(SLAB_STAT[i].equals("3")){ context.put("MESSAGES", " 板坯状态已经结束! "); return PosBizControlConstants.SUCCESS; } if(SLAB_NO[i] == null||SLAB_NO[i].equals("")||TO_ADDR[i].equals("")||TO_ADDR[i] == null){ context.put("MESSAGES", " 板坯号,地址不能为空 "); return PosBizControlConstants.SUCCESS; } if(TO_ADDR[i] == null||TO_ADDR[i].equals("")||TO_ADDR[i].length() > 8||TO_ADDR[i].equals("")){ context.put("MESSAGES", " 垛位错误 "); return PosBizControlConstants.SUCCESS; } PosParameter param1 = new PosParameter(); param1 = new PosParameter(); param1.setWhereClauseParameter(0, SLAB_NO[i]); PosRowSet rowSet = getDao("mesdao").find("UIG040061_MOVEALBE_SLAB.select", param1); while(rowSet.hasNext()){ PosRow row = rowSet.next(); String slabStat = (String)row.getAttribute("SLAB_STAT"); String missionClf = (String)row.getAttribute("MISSNO_CLF"); String lstIngrCd = (String)row.getAttribute("LST_INGR_CD"); String slabIngrGrd = (String)row.getAttribute("SLAB_INGR_DEC_GRD"); String slabTotalGrd = (String)row.getAttribute("SLAB_TOT_DEC_GRD"); String curProgCd = (String)row.getAttribute("CUR_PROG_CD"); Object SLAB_OUT_TP = row.getAttribute("SLAB_OUT_TP"); //是否允许出库 if(slabStat.equals("3")){ context.put("MESSAGES", " 板坯状态已经结束! "); return PosBizControlConstants.SUCCESS; } //2013/3/11 MODIFY BY MGP // if(curProgCd.equals("RAB")){ // context.put("MESSAGES", " 精整待机坯料! "); // return PosBizControlConstants.SUCCESS; // } if(!(missionClf == null)&&(missionClf.equals("3") || missionClf.equals("2"))){ context.put("MESSAGES", " 加回,轧回,吊销坯不能在此入库! "); return PosBizControlConstants.SUCCESS; } if(lstIngrCd == null){ context.put("MESSAGES", " 无成份实绩,不能入库! "); return PosBizControlConstants.SUCCESS; } System.out.println(TO_ADDR[i].substring(0,1)); if((slabIngrGrd == null || (!slabIngrGrd.equals("1"))) && TO_ADDR[i].substring(0,1).equals("Z")){ context.put("MESSAGES", " 成份等级不合格,不能入库! "); return PosBizControlConstants.SUCCESS; } if((StringUtils.isBlank(slabTotalGrd)) && TO_ADDR[i].substring(0,1).equals("Z")){ context.put("MESSAGES", " 板坯未进行综合判定,不能入库! "); return PosBizControlConstants.SUCCESS; } //添加不允许出库限制 if(null == SLAB_OUT_TP || StringUtils.isEmpty(SLAB_OUT_TP.toString())) { if("Z".equalsIgnoreCase(TO_ADDR[i].substring(0,1))){ context.put("MESSAGES", " 坯料不允许出库,请联系质检!"); return PosBizControlConstants.SUCCESS; } } } //获得垛位层数 if(!yardHandl.chekStorelay(TO_ADDR[i])){ context.put("MESSAGES", TO_ADDR[0] + " 垛位错误或则已经放满,不能超过16块! "); return PosBizControlConstants.SUCCESS; } String StoreLay = null; int lay = yardHandl.getStorelay(TO_ADDR[i]); if(lay < 10){ StoreLay = "0" + lay; } else{ StoreLay = "" + lay; } //From Address SLAB NO CLEAR if(YARD_ADDR[i] != null && !(YARD_ADDR[i].equals(""))){ //防止炼钢,热轧之间误操作,把对方的坯料入库 //if(YARD_ADDR[i].substring(0, 1).equals("L") || YARD_ADDR[i].substring(0, 1).equals("Z")|| YARD_ADDR[i].substring(0, 1).equals("z")){ if((YARD_ADDR[i].substring(0, 1).equals("Z")|| YARD_ADDR[i].substring(0, 1).equals("z")) && !"Z999XN".equals(FROM_ADDR[i].substring(0,6))){ context.put("MESSAGES", " 已经入库 " + YARD_ADDR[i]); return PosBizControlConstants.SUCCESS; } //清空原始垛位信息 EG: A00101 C00203 .... else{ yardHandl.clearFromAddrBySlabNo(SLAB_NO[i]); } } /*PosParameter param = new PosParameter(); PosRowSet rowset = null; PosRow row = null;*/ // TO Address SLAB NO Setting yardHandl.setToAddr(SLAB_NO[i], FROM_ADDR[i], "", TO_ADDR[i], StoreLay, "", "ComplusMov"); String activityId = "",AppId = "",Exeejob = ""; int flag = 1; //入库 if( (FROM_ADDR[i].substring(0,1).equals("L") || (FROM_ADDR[i].substring(0,1).equals("H") && !FROM_ADDR[i].substring(0,1).equals("H516")) || FROM_ADDR[i].substring(0,2).equals("A0") || FROM_ADDR[i].substring(0,2).equals("C0"))//在库跺位 //出库跺位 && (TO_ADDR[i].substring(0,1).equals("Z") || TO_ADDR[i].substring(0,1).equals("T") || TO_ADDR[i].equals("H516")) ){ activityId = "55A"; AppId = "板坯入热轧库"; Exeejob = "N"; flag = 0; //配重自动审核 CallableStatement cstm = null; try { cstm = this.getDao("mesdao").getCallableStatement("WEIGHT_CHECK.CAL"); cstm.setString(1, SLAB_NO[i]); cstm.registerOutParameter(2, java.sql.Types.VARCHAR); cstm.execute(); //String err = cstm.getString(2); }catch(Exception ex){ ex.printStackTrace(); } finally{ if(cstm != null){ try{ cstm.close(); }catch(Exception e) { e.printStackTrace(); } } } } //退库 if( (FROM_ADDR[i].substring(0,1).equals("T") || FROM_ADDR[i].equals("H516") || FROM_ADDR[i].substring(0,1).equals("Z")) && ((TO_ADDR[i].substring(0,1).equals("L") || (TO_ADDR[i].substring(0,1).equals("H") && !TO_ADDR[i].substring(0,1).equals("H516")) || TO_ADDR[i].substring(0,2).equals("A0") || TO_ADDR[i].substring(0,2).equals("C0"))) ){ activityId = "55A"; AppId = "板坯退热轧库"; Exeejob = "D"; flag = 0; } /*跺位变更,出库操作*/ if(TO_ADDR[i].substring(0,1).equals("Z")){ yardHandl.setEntSlabComm(SLAB_NO[i], TO_ADDR[i], StoreLay, "1"); }else if(TO_ADDR[i].substring(0,1).equals("L")){ yardHandl.setEntSlabComm(SLAB_NO[i], TO_ADDR[i], StoreLay, ""); } //检查是否有悬空垛位 SendProg_NIG040200(FROM_ADDR[i]); SendProg_NIG040200(TO_ADDR[i]); /*//检查是否热送 HCR_CLF 修改入库时间记录(炼钢,热轧) CUR_LOAD_LOC PosParameter param5 = new PosParameter(); param5.setWhereClauseParameter(0, SLAB_NO[i]); PosRowSet SpecSlabVO = getDao("mesdao").find("UIG040042_SPEC_SLAB_MILL_FL.select", param5); */ if(flag == 0){ /*财务数据上抛*/ CallableStatement cstm = null; try { cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL"); cstm.setString(1, SLAB_NO[i]); cstm.setString(2, activityId); cstm.setString(3, Exeejob); cstm.setString(4, AppId); cstm.setString(5, StringUtils.isBlank(MOVE_EMP_NM[0])?"":MOVE_EMP_NM[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(); } } } } } context.put("MESSAGES", " 操作成功! "); return PosBizControlConstants.SUCCESS; } /** * 向指定URL发送GET方法的请求 * * @param url * 发送请求的URL * @param param * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return URL 所代表远程资源的响应结果 */ public String sendGet(String url, String param) { String result = ""; BufferedReader in = null; try { String urlNameString = url + param; URL realUrl = new URL(urlNameString); // 打开和URL之间的连接 URLConnection connection = realUrl.openConnection(); // 设置通用的请求属性 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 建立实际的连接 connection.connect(); // 获取所有响应头字段 Map> map = connection.getHeaderFields(); // 遍历所有的响应头字段 for (String key : map.keySet()) { System.out.println(key + "--->" + map.get(key)); } // 定义 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader( connection.getInputStream(),"UTF-8")); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输入流 finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } return result; } //Mill Schedule delete request service call public void SendProg_NIF024060(String SlabNo ) { PosContext context = new PosContext(); PosMessage message = new PosMESMessageImpl(); String TcId = "NIF024060"; message.setTCID(TcId); message.setObject("MSG_ID",TcId); message.setObject("TYPE","S"); message.setObject("FROM",SlabNo); message.setObject("TO",SlabNo); message.setObject("REG_ID","UIG040010"); context.setMessage(message); this.processComponent(PosConstants.CREATE_MESSAGE, context); String transactionCode = context.getMessage().getTC(); message.setTCID(TcId); String serviceName = "NIF024060"; String SERVICE_POSTFIX = "-service"; context.put(PosBizControlConstants.SERVICE_NAME, serviceName + SERVICE_POSTFIX); context.setMessage(message); PosBizControlIF controller = PosBizProvider.getController(); controller.doSubController(context,false); } public String SendProg_NIG040200(String yardAddr) { logger.logInfo("PosSaveSlabCutting---> yardAddr:"+yardAddr ); PosContext context = new PosContext(); PosMessage message = new PosMESMessageImpl(); String TcId = "NIG040200"; message.setTCID(TcId); message.setObject("MSG_ID",TcId); message.setObject("YARD_ADDR",yardAddr); 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"); logger.logInfo("PosSaveSlabCutting SendProg_NIE012070 SERVICE_ERR_MSG:"+SERVICE_ERR_MSG ); if (SERVICE_ERR_MSG != null) { throw new PosException(SERVICE_ERR_MSG); } return null; } }