package xin.glue.ui.G.G04; import java.math.BigDecimal; import java.sql.CallableStatement; import java.sql.SQLException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; 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.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; public class ErrorSalbChek extends PosActivity { private PosGenericDao dao = this.getDao("mesdao"); private PosParameter param = new PosParameter(); private PosRowSet rowset = null; private PosRow row = null; private String PLT_TRS_EMP_NM = ""; public String runActivity(PosContext context) { String[] operType = (String[]) context.get("OPER_TYPE"); String[] SLAB_RTURN = (String[]) context.get("SLAB_RTURN"); String[] slabNo = (String[]) context.get("SLAB_NO"); String[] curProgCd = (String[]) context.get("CUR_PROG_CD"); String[] chk = (String[]) context.get("CHK"); String[] PLT_TRS_EMP_NM1 = (String[]) context.get("PLT_TRS_EMP_NM"); PosRowSet rowset = null; PosRow row = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); PLT_TRS_EMP_NM = (PLT_TRS_EMP_NM1 == null || PLT_TRS_EMP_NM1.length == 0) ?"3qAdmin00":PLT_TRS_EMP_NM1[0]; if (operType[0].equals("END")) { //END 强制结束 for (int i = 0; i < slabNo.length; i++) { if (!chk[i].equals("Y")) continue; if (curProgCd[0].equals("RBB")) { context.put("MESSAGES", slabNo[i] + "已经制定轧制计划,请先取消轧制计划!"); return PosBizControlConstants.SUCCESS; }// else if(curProgCd[0].equals("RBA")){ // SendProg_NIF024060(slabNo[i],"M"); // } String sql = "SELECT COILSTAT(T.SLAB_NO) STAT_FLAG,TO_CHAR(TO_DATE(T.SLAB_CUT_DTIME,'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS') SLAB_CUT_DTIME1 FROM TBG02_SLAB_COMM T WHERE T.SLAB_NO = ?"; param = new PosParameter(); param.setWhereClauseParameter(0, slabNo[i]); rowset = dao.findByQueryStatement(sql, param); if (rowset.hasNext())//查询库存信息 已出库板坯不允许强制结束 { row = rowset.next(); Calendar nowCal = Calendar.getInstance(); int nowMonth = nowCal.get(Calendar.MONTH) + 1; Calendar cutCal = Calendar.getInstance(); try { cutCal.setTime(sdf.parse((String)row.getAttribute("SLAB_CUT_DTIME1"))); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } int cutMonth = cutCal.get(Calendar.MONTH) + 1; if(nowMonth > cutMonth){ context.put("MESSAGES", slabNo[i] + "板坯已关帐,不允许强制结束"); return PosBizControlConstants.SUCCESS; } String stat = (String)row.getAttribute("STAT_FLAG");// if(!"在库".equals(stat)){ context.put("MESSAGES", slabNo[i] + "板坯已出炼钢库,不允许强制结束,请核实"); return PosBizControlConstants.SUCCESS; } } if(!"X01519".equals(PLT_TRS_EMP_NM) && !"sdf".equals(PLT_TRS_EMP_NM) && !"XL005001".equals(PLT_TRS_EMP_NM)){ context.put("MESSAGES", "强制结束只可由限定账号操作,请联系相关人员"); return PosBizControlConstants.SUCCESS; } forceEndSlab(slabNo[i]); } } else if (operType[0].equals("BCK") || operType[0].equals("CHF") || operType[0].equals("ZHK")) { //CHF 切废 ZHK 转废钢库 BCK 强制退回 for (int i = 0; i < slabNo.length; i++) { if (!chk[i].equals("Y")) continue; if (curProgCd[0].equals("RBB")) { context.put("MESSAGES", slabNo[i] + "已经制定轧制计划,请先取消轧制计划!"); return PosBizControlConstants.SUCCESS; } String sql = "SELECT COILSTAT(T.SLAB_NO) STAT_FLAG FROM TBG02_SLAB_COMM T WHERE T.SLAB_NO = ?"; param = new PosParameter(); param.setWhereClauseParameter(0, slabNo[i]); rowset = dao.findByQueryStatement(sql, param); if (rowset.hasNext())//查询库存信息 已做过下列操作的不允许再操作 { row = rowset.next(); String stat = (String)row.getAttribute("STAT_FLAG");// if("利库母坯".equals(stat)){ context.put("MESSAGES", slabNo[i] + "板坯已利库,不允许再进行此操作"); return PosBizControlConstants.SUCCESS; } if("强制结束".equals(stat)){ context.put("MESSAGES", slabNo[i] + "板坯已强制结束,不允许再进行此操作"); return PosBizControlConstants.SUCCESS; } /*if("废钢库".equals(stat)){ context.put("MESSAGES", slabNo[i] + "板坯已进入废钢库,不允许再进行此操作"); return PosBizControlConstants.SUCCESS; }*/ if("切废".equals(stat)){ context.put("MESSAGES", slabNo[i] + "板坯已切废,不允许再进行此操作"); return PosBizControlConstants.SUCCESS; } } /*热轧已入炉且处于上料,轧制完成的不可以退回到炼钢库*/ if(operType[0].equals("BCK")){ String sql1 = "select t.RHF_STAT from tbh02_reheatfur t where t.SLAB_NO like ?||'%' "; param = new PosParameter(); param.setWhereClauseParameter(0, slabNo[i]); rowset = dao.findByQueryStatement(sql1, param); if (rowset.hasNext()) { row = rowset.next(); String RHF_STAT = (String)row.getAttribute("RHF_STAT"); if(!"3".equals(RHF_STAT)){ context.put("MESSAGES", "此坯料处于轧制上料或者轧制完成状态,不可退回炼钢库"); return PosBizControlConstants.SUCCESS; } } } String err = forceRebackSlab(slabNo[i], SLAB_RTURN[0], operType[0]); if(!err.contains("成功")){ context.put("MESSAGES", err); return PosBizControlConstants.SUCCESS; } } } context.put("MESSAGES", " 操作成功!"); return PosBizControlConstants.SUCCESS; } private void forceEndSlab(String slabNo) { CallableStatement cstm = null; param = new PosParameter(); param.setWhereClauseParameter(0, "5"); param.setWhereClauseParameter(1, "3"); param.setWhereClauseParameter(2, slabNo); dao.update("NIG020610_SLAB_END.update", param); param = new PosParameter(); param.setWhereClauseParameter(0, slabNo); dao.update("NIG020610_SLAB_END_D.update", param); param = new PosParameter(); param.setWhereClauseParameter(0, slabNo); dao.update("UIG040060_COMPLUS_FROM_SLAB_NO.update", param); /*财务数据上抛 强制结束的板坯也需要上传*/ try{ cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL"); cstm.setString(1, slabNo); cstm.setString(2, "11A"); cstm.setString(3, "D"); cstm.setString(4, "板坯强制结束"); cstm.setString(5, PLT_TRS_EMP_NM); cstm.registerOutParameter(6, java.sql.Types.VARCHAR); cstm.execute(); String err = cstm.getString(6); String er1 = ""; }catch (Exception e) { // TODO: handle exception }finally{ if (cstm != null){ try{ cstm.close(); } catch (SQLException e){ logger.logWarn(e.getMessage(), e); } } } } private String forceRebackSlab(String slabNo, String SLAB_RTURN, String operType) { // 增加降级历史记录 20101227 wxy CallableStatement cstm = null; //param = new PosParameter(); try { cstm = this.getDao("mesdao").getCallableStatement( "ORD_HIS_INSERT.call"); cstm.setString(1, "B"); cstm.setString(2, "S"); cstm.setString(3, ""); cstm.setString(4, "UIG040700"); cstm.setString(5, ""); cstm.setString(6, ""); cstm.setString(7, ""); cstm.setString(8, slabNo); cstm.setString(9, "TM"); cstm.setString(10, ""); cstm.setString(11, ""); cstm.setString(12, ""); cstm.setString(13, ""); 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); } } } // end 增加降级历史记录 if (operType.equals("BCK")) {//强制退回 String sql = "SELECT COILSTAT(T.SLAB_NO) STAT_FLAG FROM TBG02_SLAB_COMM T WHERE T.SLAB_NO = ?"; param = new PosParameter(); param.setWhereClauseParameter(0, slabNo); rowset = dao.findByQueryStatement(sql, param); if (rowset.hasNext())//查询库存信息 热轧切废不发送移动点,炼钢切废发送 { row = rowset.next(); String stat = (String)row.getAttribute("STAT_FLAG");// if("在库".equals(stat) || "利库母坯".equals(stat)){ return "坯料"+slabNo+"已是"+stat+",不可再退回,请核实"; } } param = new PosParameter(); param.setWhereClauseParameter(0, SLAB_RTURN); param.setWhereClauseParameter(1, slabNo); dao.update("UIG040700_SLAB_BACK.update", param); //清除时要退回原跺位 int updateCnt = new YardHandle(getDao("mesdao")).clearFromAddrBySlabNo(slabNo); /*财务数据上抛*/ try{ cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL"); cstm.setString(1, slabNo); cstm.setString(2, "55A"); cstm.setString(3, "D"); cstm.setString(4, "板坯退热轧库(强制)"); cstm.setString(5, PLT_TRS_EMP_NM); cstm.registerOutParameter(6, java.sql.Types.VARCHAR); cstm.execute(); String err = cstm.getString(6); }catch (Exception e) { // TODO: handle exception }finally{ if (cstm != null){ try{ cstm.close(); } catch (SQLException e){ logger.logWarn(e.getMessage(), e); } } } } else if ((operType.equals("CHF"))) {//切废 String sql = "SELECT COILSTAT(T.SLAB_NO) STAT_FLAG FROM TBG02_SLAB_COMM T WHERE T.SLAB_NO = ?"; param = new PosParameter(); param.setWhereClauseParameter(0, slabNo); rowset = dao.findByQueryStatement(sql, param); if (rowset.hasNext())//查询库存信息 热轧切废不发送移动点,炼钢切废发送 { row = rowset.next(); String stat = (String)row.getAttribute("STAT_FLAG");// if("在库".equals(stat)){ /*切废新增发送异动点 jiangxin 20220304*/ try{ cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL"); cstm.setString(1, slabNo); cstm.setString(2, "11AD"); cstm.setString(3, "N"); cstm.setString(4, "板坯切废"); cstm.setString(5, PLT_TRS_EMP_NM); cstm.registerOutParameter(6, java.sql.Types.VARCHAR); cstm.execute(); String err = cstm.getString(6); }catch (Exception e) { // TODO: handle exception }finally{ if (cstm != null){ try{ cstm.close(); } catch (SQLException e){ logger.logWarn(e.getMessage(), e); } } } } } param = new PosParameter(); param.setWhereClauseParameter(0, SLAB_RTURN); param.setWhereClauseParameter(1, slabNo); dao.update("UIG040700_SLAB_CHF.update", param); param = new PosParameter(); param.setWhereClauseParameter(0, slabNo); dao.update("UIG040700_CHF_YARD.update", param); } else if ((operType.equals("ZHK"))) {//转废钢库 //转入废钢库的坯料必须判废 param = new PosParameter(); param.setWhereClauseParameter(0, slabNo); String querysql = "SELECT T.SLAB_TOT_DEC_GRD FROM TBG02_SLAB_COMM T WHERE T.SLAB_NO = ?"; rowset = dao.findByQueryStatement(querysql, param); if(rowset.hasNext()){ row = rowset.next(); String SLAB_TOT_DEC_GRD = (String)row.getAttribute("SLAB_TOT_DEC_GRD"); if(StringUtils.isBlank(SLAB_TOT_DEC_GRD) || !"8".equals(SLAB_TOT_DEC_GRD)){ return "坯料"+slabNo+"综判未判废,不允许转入废钢库,请联系质检"; } } param = new PosParameter(); param.setWhereClauseParameter(0, SLAB_RTURN); param.setWhereClauseParameter(1, slabNo); dao.update("UIG040700_SLAB_ZHK.update", param); param = new PosParameter(); param.setWhereClauseParameter(0, slabNo); dao.update("UIG040700_CHF_YARD.update", param); /*财务数据上抛 转废钢库不再抛送异动点 try{ cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL"); cstm.setString(1, slabNo); cstm.setString(2, "11A"); cstm.setString(3, "D"); cstm.setString(4, "板坯转废钢库"); cstm.setString(5, PLT_TRS_EMP_NM); cstm.registerOutParameter(6, java.sql.Types.VARCHAR); cstm.execute(); String err = cstm.getString(6); }catch (Exception e) { // TODO: handle exception }finally{ if (cstm != null){ try{ cstm.close(); } catch (SQLException e){ logger.logWarn(e.getMessage(), e); } } }*/ } return "操作成功"; } public String SendProg_NIE012070(String MatNo, String sOrdNo, String sOrdSeq, String sBefOrdNo, String sBefOrdSeq, String sProgCd, String sBefProgCd, String sKind, String nwgt) { logger.logInfo("PosSaveSlabCutting---> nwgt:" + nwgt); PosContext context = new PosContext(); PosMessage message = new PosMESMessageImpl(); BigDecimal Wgt = new BigDecimal(nwgt); String TcId = "NIE012070"; message.setTCID(TcId); message.setObject("MSG_ID", TcId); message.setObject("BEF_ORD_NO", sBefOrdNo); message.setObject("BEF_ORD_SEQ", sBefOrdSeq); message.setObject("ORD_NO", sOrdNo); message.setObject("ORD_SEQ", sOrdSeq); message.setObject("BEF_PROG_CD", sBefProgCd); message.setObject("PROG_CD", sProgCd); message.setObject("MAT_TYPE", sKind); message.setObject("MAT_NO", MatNo); message.setObject("WGT", Wgt); message.setObject("PGMID", "PosSaveSlabCutting"); message.setObject("REG_ID", "UIG020060"); 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; } public String SendProg_NIE012080() { PosContext context = new PosContext(); PosMessage message = new PosMESMessageImpl(); String TcId = "NIE012080"; message.setTCID(TcId); message.setObject("MSG_ID", TcId); message.setObject("AA", null); 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_NIE012080 SERVICE_ERR_MSG:" + SERVICE_ERR_MSG); if (SERVICE_ERR_MSG != null) { throw new PosException(SERVICE_ERR_MSG); } return null; } // call mill scheduling reject service class public void SendProg_NIF024060(String SlabNo, String RejType) { logger.logInfo("PosSaveMissionNo SendProg_NIF024060 "); PosContext context = new PosContext(); PosMessage message = new PosMESMessageImpl(); String TcId = "NIF024060"; message.setTCID(TcId); message.setObject("MSG_ID", TcId); message.setObject("TYPE", RejType); message.setObject("FROM", SlabNo); message.setObject("TO", SlabNo); message.setObject("REG_ID", "UIG020060"); 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); } }