package xin.glue.ui.G.G02; import java.sql.CallableStatement; import java.sql.SQLException; import org.apache.commons.lang.StringUtils; import xin.glue.ui.G.G01.XTBGCOMM; import com.posdata.glue.biz.activity.PosActivity; import com.posdata.glue.biz.constants.PosBizControlConstants; 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; public class XinDivideCharge extends PosActivity { public String runActivity(PosContext context) { CallableStatement cstm = null; PosGenericDao dao = getDao("mesdao"); PosParameter param = null; PosRowSet rowset = null; PosRow row = null; String sReturnMsg = ""; String[] chk = (String[])context.get("CHK"); String[] divideType = (String[])context.get("DIVIDE_TYPE"); String[] chargeNo = (String[])context.get("CHARGE_NO"); String[] subChargeNo = (String[])context.get("SUB_CHARGE_NO"); String[] slabNo = (String[])context.get("SUB_SLAB_NO"); String[] subSlabNo = (String[])context.get("SUB_SLAB_NO"); String[] chargeWgt = (String[])context.get("CHARGE_WGT"); String[] slabWgt = (String[])context.get("SLAB_WGT"); String[] subChargeCode = (String[])context.get("SUB_CHARGE_CODE"); String[] regId = (String[])context.get("REG_ID"); String[] regShift = (String[])context.get("REG_SHIFT"); String[] regGroup = (String[])context.get("REG_GROUP"); String[] chemSeq = (String[])context.get("CHEM_SEQ"); String[] SLAB_NO = (String[])context.get("SLAB_NO"); String[] REG_EMP_ID = (String[])context.get("REG_EMP_ID"); if(divideType == null ){ return "SUCCESS";} String subChNo = "" ; String chNo = ""; String chmSq = ""; String newSlabNo = ""; for(int i = 0 ; i < divideType.length ; i++){ if(!chk[i].equals("Y")){continue;} subChNo = subChargeNo[i]; chNo = subChargeNo[i].substring(0, 9).trim() + subChargeCode[i].trim(); chmSq = chemSeq[i]; newSlabNo = subChargeNo[i].substring(0, 9).trim() + subChargeCode[i].trim() + SLAB_NO[i].substring(10,13); //炉次 /*if(divideType[i].equals("C")){ //检查有板坯切割以后,不能直接根据钢水分炉,必须从板坯划分 param = new PosParameter(); param.setWhereClauseParameter(0, chargeNo[i]); rowset = dao.find("UIG020090_SLAB_CUTED_CHEK", param); if(rowset.hasNext()){ context.put("MESSAGES", " 板坯切割完成,不能操作! "); return PosBizControlConstants.SUCCESS; } param = new PosParameter(); param.setWhereClauseParameter(0, "Y"); param.setWhereClauseParameter(1, chargeNo[i]); dao.update("UIG020090_CHARGE_COMM_DIVIDE_UPDATE", param); param = new PosParameter(); param.setWhereClauseParameter(0, chargeWgt[i]); param.setWhereClauseParameter(1, subChargeCode[i]); int uptCnt = dao.update("UIG020090_CHARGE_COMMD_WGT_UPDATE", param); if(uptCnt == 0){ param = new PosParameter(); param.setValueParamter(0, subChargeCode[i]); param.setValueParamter(1, chargeWgt[i]); param.setValueParamter(2, subChargeCode[i]); param.setValueParamter(3, regId[i]); param.setValueParamter(4, regShift[i]); param.setValueParamter(5, regGroup[i]); param.setValueParamter(6, chargeNo[i]); dao.insert("UIG020090_CHARGE_COMMD_WGT_INSERT", param); } param = new PosParameter(); param.setWhereClauseParameter(0, chargeNo[i]); param.setWhereClauseParameter(1, chargeNo[i]); param.setWhereClauseParameter(2, chargeNo[i]); param.setWhereClauseParameter(3, chargeNo[i]); dao.update("UIG020090_CHARGE_COMMD_WGT_UPDATE_02", param); //板坯 }else*/ if(divideType[i].equals("S")){ if(!newSlabNo.equals(SLAB_NO[i])){ String sql = "SELECT COILSTAT(T.SLAB_NO) STAT_FLAG FROM TBG02_SLAB_COMM T WHERE T.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 cntStat = (String)row.getAttribute("STAT_FLAG");// if(!"在库".equals(cntStat)){//视为不在库 context.put("MESSAGES", " 操作失败!" + SLAB_NO[i] + "已不在炼钢库,请退库后再进行操作"); return PosBizControlConstants.SUCCESS; } } /*财务数据上抛*/ try{ /*原板坯号*/ cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL"); cstm.setString(1, SLAB_NO[i]); cstm.setString(2, "72AD"); cstm.setString(3, "N"); cstm.setString(4, "炉次拆分(板坯)O"); cstm.setString(5, StringUtils.isBlank(REG_EMP_ID[0])?"3qAdmin00":REG_EMP_ID[0]); 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); } } } } String sqlStr = "select * from tbg02_charge_comm_d where charge_no = ?"; String para = subChargeNo[i].substring(0, 9).trim() + subChargeCode[i].trim(); if(!XTBGCOMM.chekRecord(dao,para, sqlStr)){ param = new PosParameter(); param.setValueParamter(0, subChargeCode[i]); param.setValueParamter(1, ""); param.setValueParamter(2, subChargeCode[i]); param.setValueParamter(3, regId[i]); param.setValueParamter(4, regShift[i]); param.setValueParamter(5, regGroup[i]); param.setValueParamter(6, subChargeNo[i]); dao.insert("UIG020090_CHARGE_COMMD_WGT_INSERT", param); }else{ param = new PosParameter(); param.setValueParamter(0, ""); param.setValueParamter(1, subChargeCode[i]); param.setValueParamter(2, regId[i]); param.setValueParamter(3, regShift[i]); param.setValueParamter(4, regGroup[i]); param.setValueParamter(5, subChargeNo[i]); param.setValueParamter(6, para); dao.insert("UIG020090_CHARGE_COMMD_WGT_UPDATE_03", param); } //是否分炉区分 param = new PosParameter(); param.setWhereClauseParameter(0, "Y"); param.setWhereClauseParameter(1, chargeNo[i]); dao.update("UIG020090_CHARGE_COMM_DIVIDE_UPDATE", param); //清空垛位 param = new PosParameter(); param.setWhereClauseParameter(0, SLAB_NO[i]); dao.update("UIG040060_COMPLUS_FROM_SLAB_NO.update", param); //所有坯料分炉后都清空判定信息 param = new PosParameter(); param.setWhereClauseParameter(0, subChargeCode[i]); param.setWhereClauseParameter(1, subChargeCode[i]); param.setWhereClauseParameter(2, slabNo[i]); dao.update("UIG020090_SLAB_COMM_UPDATE_NEW", param); /*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){ //一体化计划则清除所有判定结果 param = new PosParameter(); param.setWhereClauseParameter(0, subChargeCode[i]); param.setWhereClauseParameter(1, subChargeCode[i]); param.setWhereClauseParameter(2, slabNo[i]); dao.update("UIG020090_SLAB_COMM_UPDATE_NEW", param); }else{ //修改板坯分炉号 param = new PosParameter(); param.setWhereClauseParameter(0, subChargeCode[i]); param.setWhereClauseParameter(1, subChargeCode[i]); param.setWhereClauseParameter(2, slabNo[i]); dao.update("UIG020090_SLAB_COMM_UPDATE", param); } }*/ //修改分炉次板坯块数,重量 param = new PosParameter(); param.setWhereClauseParameter(0, subChargeNo[i]); rowset = dao.find("UIG020090_SLAB_COMM_QUERY",param); while(rowset.hasNext()){ row = rowset.next(); String chgNo = (String)row.getAttribute("CHARGE_NO"); param = new PosParameter(); param.setWhereClauseParameter(0, regId[i]); param.setWhereClauseParameter(1, regShift[i]); param.setWhereClauseParameter(2, regGroup[i]); param.setWhereClauseParameter(3, chgNo); param.setWhereClauseParameter(4, chgNo); dao.update("UIG020090_CHARGE_COMMD_UPDATE_02", param); } } if(divideType[0].equals("S")){ param = new PosParameter(); param.setWhereClauseParameter(0, subChargeNo[i]); param.setWhereClauseParameter(1, subChargeNo[i]); dao.update("UIG020090_CHARGE_COMMD_DELETE", param); } if(!newSlabNo.equals(SLAB_NO[i])){ /*财务数据上抛*/ try{ /*新板坯号*/ cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL"); cstm.setString(1, newSlabNo); cstm.setString(2, "72AD"); cstm.setString(3, "N"); cstm.setString(4, "炉次拆分(板坯)N"); cstm.setString(5, StringUtils.isBlank(REG_EMP_ID[0])?"3qAdmin00":REG_EMP_ID[0]); 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); } } } } } //修改分炉次板坯块数,重量 try{ cstm = dao.getCallableStatement("UIG0020090_01.CALLSTATEMENT"); cstm.setString(1, subChNo); cstm.setString(2, chNo); cstm.setString(3, chmSq); cstm.setString(4, ""); cstm.registerOutParameter(5, java.sql.Types.VARCHAR); cstm.execute(); sReturnMsg = cstm.getString(5); System.out.println("------------> " + sReturnMsg + "-----------" + sReturnMsg); }catch(Exception ex){ logger.logError(ex.getMessage(), ex); }finally { if (cstm != null) { try { cstm.close(); } catch (SQLException e) { logger.logWarn(e.getMessage(), e); } } } context.put("MESSAGES", " 操作成功! "); return PosBizControlConstants.SUCCESS; } }