package xin.glue.ui.G.G02; import java.math.BigDecimal; import java.sql.CallableStatement; import java.sql.SQLException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.lang.StringUtils; import xin.glue.ui.G.G01.XTBGCOMM; import xin.glue.ui.G.G01.XTBGCreateMaterial; 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 PosSaveSlabCutting extends PosActivity { public String runActivity(PosContext context) { PosGenericDao dao = getDao("mesdao"); PosParameter param = new PosParameter(); PosRowSet rowset = null; PosRow row = null; CallableStatement cstm = null; XTBGCreateMaterial xtbcm = new XTBGCreateMaterial(dao); XTBGCOMM xtbgcomm = new XTBGCOMM(dao); String[] ShiftCd = (String[]) context.get("CUT_WKSHIFT"); //班次 String[] WkGroup = (String[]) context.get("CUT_WKGROUP"); //班组 String[] RegId = (String[]) context.get("CUT_EMP_ID"); //作业人 String[] CcDevNo = (String[]) context.get("CC_DEVNO"); //连铸机号 String[] status = (String[]) context.get("rowStuts"); //行状态 String[] SlabNo = (String[]) context.get("SLAB_NO"); //板坯号 String[] SlabThk = (String[]) context.get("SLAB_THK"); //板坯厚度 String[] SlabWth = (String[]) context.get("SLAB_WTH"); //板坯宽度 String[] SlabLen = (String[]) context.get("SLAB_LEN"); //板坯长度 String[] SlabWgt = (String[]) context.get("SLAB_WGT"); //板坯重量 String[] ord_Fl = (String[]) context.get("ORD_FL"); //订单区分 String[] SlabSizeDec = (String[]) context.get("SLAB_SIZE_DEC_GRD"); //尺寸等级 String[] LastCutYn = (String[]) context.get("LAST_SLAB_YN"); //炉次结束区分 String[] SurplmatlYn = (String[]) context.get("SURPLMATL_YN"); //超量区分 String[] strandNo1 = (String[]) context.get("STRAND_NO1"); //流号 String[] strandNo2 = (String[]) context.get("STRAND_NO2"); //流号 String[] chk = (String[])context.get("CHK"); //选择区分 String[] endDifStlGrdYn = (String[])context.get("DIFF_STL_GRD_STA_END_YN"); //过渡段 String[] twSlabYn = (String[])context.get("TW_SLAB_YN"); //头尾坯 //注意 这里计划板坯号的炉号有可能跟炉次号不一样 如果切割时候进行移动操作 String[] PlanSlabNo = (String[]) context.get("PLAN_SLAB_NO"); //计划板坯号 String[] ChargeNo = (String[]) context.get("CHARGE_NO"); //炉次号 String[] subSlabNo = (String[]) context.get("SUB_SLAB_NO"); //子板坯号 if(status == null){ context.put("MESSAGES", " 必须选择一行记录! "); return PosBizControlConstants.SUCCESS; } if(CcDevNo[0] == null || StringUtils.isBlank(CcDevNo[0])){ context.put("MESSAGES", " 请在上方选择对应连铸机号! "); return PosBizControlConstants.SUCCESS; } dao.update("NIG020200_BOF_STAT_DTIME.update"); dao.update("NIG020200_CASTING_STA_DTIME.update"); dao.update("NIG020200_CASTING_END_DTIME.update"); String[] strandNo = new String[SlabNo.length]; if (status != null) { for (int i = 0; i < status.length; i++) { // SEARCH FROM TBF01_SPE_SLAB String OrdNo = null; String OrdSeq = null; String MILL_FL = null; String STATUS_CD = null; String HcrClf = null; String SlabRt = null; String ordFl = ""; String sfCode = null; String DSN_SLAB_NO = null; //SEARCH FROM TBG02_SLAB_COMM String IngrDec = null; String LoadLoc = null; String CUR_PROG_CD = null; String PR_BEF_PROG_CD = null; String PR_CHARGE_WGT = null; String EdPlanSLabNo = null; String ED_SLAB_NO = null; String BefOrdNo = null; String BefOrdSeq = null; String NonordCause = null; String YardLoc = null; String LinYardLoc = null; String RST_SLAB_CUT_DTIME = null; String ED_DIFF_STL_GRD_STA_END_YN1 = "1"; //过渡段 String SLAB_SIZE_DEC_GRD = "1"; //尺寸等级 String p_slab_status = null; //中厚板的坯料 String Cur_Strand_no = ""; //流号 String stlGrd = null; if(SlabLen == null || SlabLen[i].equals("0") || SlabThk == null || SlabThk[i].equals("0") || SlabWth == null || SlabWth[i].equals("0") || SlabWgt == null || SlabWgt[i].equals("0")){ context.put("MESSAGES", SlabNo[i] + "规格与重量不能为0,操作失败! "); return PosBizControlConstants.SUCCESS; } if(Double.parseDouble(SlabLen[i]) > 20000){ context.put("MESSAGES", SlabNo[i] + "长度不能超过20米,操作失败! "); return PosBizControlConstants.SUCCESS; } //经技术中心与二钢厂协调后将原钢坯密度7.8改为7.85,由于原理重是由板坯计划过来,无法修改,故只改板坯输机后的理重 20200821 jiangxin SlabWgt[i] = Math.round(Double.parseDouble(SlabThk[i]) * Double.parseDouble(SlabWth[i]) * Double.parseDouble(SlabLen[i]) * 7.85 / 1000000) + ""; if(!chk[i].equals("Y")) continue; //钢水余量切非计划的坯料时 生成计划板坯号 这时的板坯号对应的炉次号 肯定跟实绩炉次号一样 if (PlanSlabNo[i]== null || PlanSlabNo[i].equals("") ) { param = new PosParameter(); param.setWhereClauseParameter(0, ChargeNo[0]); PosRowSet chargeVO = getDao("mesdao").find("UIG020060_02.select", param); if (chargeVO.hasNext() ) { PosRow chargeROW = chargeVO.next(); String PlanChargeNo = (String)chargeROW.getAttribute("PLAN_CHARGE_NO"); EdPlanSLabNo = PlanChargeNo+"010"; PlanSlabNo[i] = EdPlanSLabNo; } if(SurplmatlYn[i]!= null && SurplmatlYn[i].equals("S")){ xtbcm.CreateSlab(PlanSlabNo[i],""); } } //获取流号 if(strandNo1[i].equals("Y")){ strandNo[i] = "1"; }else if(strandNo2[i].equals("Y")){ strandNo[i] = "2"; }else{ context.put("MESSAGES", SlabNo[i] + " 流号不能为空,操作失败! "); return PosBizControlConstants.SUCCESS; } //生成按流号划分的板坯号 SLAB_NO //查询坯料进程状态,确认修改流号导致的坯料号变更对后续操作无影响 //做完轧制计划的坯料不许变更,必须人工降级后操作 //如果是修改流号,为减少实物无系统数据混乱,此坯料降级为余材 param = new PosParameter(); param.setWhereClauseParameter(0, PlanSlabNo[i]); String querysql = "SELECT T.SLAB_STAT,T.STRAND_NO FROM TBG02_SLAB_COMM T WHERE T.PLAN_SLAB_NO = ? ORDER BY T.SUB_SLAB_NO DESC"; rowset = dao.findByQueryStatement(querysql, param); if(rowset.hasNext()){ row = rowset.next(); String slabStat = (String)row.getAttribute("SLAB_STAT"); String tmpStrandNo = (String)row.getAttribute("STRAND_NO"); if(tmpStrandNo != null && !tmpStrandNo.equals(strandNo[i])){ context.put("MESSAGES", " 切割完成流号不能修改! "); return PosBizControlConstants.SUCCESS; } //不是第一次切割,流号修改,此坯料降级为余材 && !preStrandNo.equals(strandNo[i]) if(slabStat.equals("1")){ param = new PosParameter(); param.setValueParamter(0, strandNo[i]); param.setValueParamter(1, ChargeNo[0]); param.setValueParamter(2, ChargeNo[0]); param.setValueParamter(3, ChargeNo[0]); param.setValueParamter(4, ChargeNo[0]); param.setValueParamter(5, ChargeNo[0]); param.setValueParamter(6, ChargeNo[0]); param.setValueParamter(7, PlanSlabNo[i]); this.getDao("mesdao").update("UIG020060_SUBSLABN0_CREATE",param); param = new PosParameter(); String qurey_sql = "SELECT SLAB_NO FROM TBG02_SLAB_COMM WHERE PLAN_SLAB_NO = ? ORDER BY SUB_SLAB_NO DESC"; param.setWhereClauseParameter(0,PlanSlabNo[i]); rowset = dao.findByQueryStatement(qurey_sql, param); if(rowset.hasNext()){ row = rowset.next(); String tempNo = (String)row.getAttribute("SLAB_NO"); SlabNo[i] = tempNo.substring(10, 13); }else{ context.put("MESSAGES", " 错误! "); return PosBizControlConstants.SUCCESS; } } } //实绩板坯号 ED_SLAB_NO = ChargeNo[0]+ SlabNo[i]; //计划板坯号 EdPlanSLabNo = PlanSlabNo[i]; //确认板坯信息已经生成 String sql = "select * from TBG02_SLAB_COMM where SLAB_NO = ?"; //板坯信息 param = new PosParameter(); param.setWhereClauseParameter(0, ED_SLAB_NO); rowset = dao.findByQueryStatement(sql, param); if (rowset.hasNext()) { row = rowset.next(); IngrDec = (String)row.getAttribute("SLAB_INGR_DEC_GRD"); LoadLoc = (String)row.getAttribute("CUR_LOAD_LOC"); CUR_PROG_CD = (String)row.getAttribute("CUR_PROG_CD"); PR_BEF_PROG_CD = (String)row.getAttribute("BEF_PROG_CD"); PR_CHARGE_WGT = (String)row.getAttribute("CHARGE_WGT"); Cur_Strand_no = (String)row.getAttribute("STRAND_NO"); ordFl = (String)row.getAttribute("ORD_FL"); } //板坯计划信息 param = new PosParameter(); param.setWhereClauseParameter(0, EdPlanSLabNo); rowset = getDao("mesdao").find("UIG020060_03.select", param); if(rowset.hasNext()) { row = rowset.next(); OrdNo = (String) row.getAttribute("ORD_NO"); OrdSeq = (String) row.getAttribute("ORD_SEQ"); MILL_FL = (String) row.getAttribute("MILL_FL"); STATUS_CD = (String) row.getAttribute("STATUS_CD"); HcrClf = (String) row.getAttribute("HCR_CLF"); SlabRt = (String) row.getAttribute("SLAB_RT"); sfCode = (String) row.getAttribute("SCARPING_PROC_YN"); DSN_SLAB_NO = (String) row.getAttribute("DSN_SLAB_NO"); stlGrd = (String) row.getAttribute("STL_GRD"); }else{ context.put("MESSAGES", " 缺少板坯指示信息,操作失败! "); return PosBizControlConstants.SUCCESS; } if(CUR_PROG_CD == null)CUR_PROG_CD = "JJB"; if(CUR_PROG_CD.equals("RBB") || CUR_PROG_CD.equals("RGF")|| CUR_PROG_CD.equals("RGC") || CUR_PROG_CD.equals("RCB") ) { context.put("MESSAGES",CUR_PROG_CD + "已经编制轧制计划,需吊轧制吊销才能修改,操作失败!"); return PosBizControlConstants.SUCCESS; } //过渡坯 if(endDifStlGrdYn[i].equals("Y")){ ED_DIFF_STL_GRD_STA_END_YN1 = "2"; } //头尾坯 if(twSlabYn != null &&("1".equals(twSlabYn[i])||"2".equals(twSlabYn[i]))){ CUR_PROG_CD = "RAB"; HcrClf = "C"; } //尺寸等级修改 if(!(SlabSizeDec[i] == null || SlabSizeDec[i].equals(""))){ SLAB_SIZE_DEC_GRD = SlabSizeDec[i]; } BigDecimal Wgt = new BigDecimal(SlabWgt[i]); if(SlabRt == null){ return PosBizControlConstants.SUCCESS; } //--------------------------------------中厚板坯料尺寸判定增加 MODY BY WXY------2011-03-09---------------------- if ("1".equals(ordFl)){ String RtnSizeDec = SlabSizeDec(SlabRt,new BigDecimal(SlabThk[i]),new BigDecimal(SlabWth[i]),new BigDecimal(SlabLen[i]),ChargeNo[0]+ subSlabNo[i],EdPlanSLabNo,Wgt); if (RtnSizeDec.equals("N")) { SLAB_SIZE_DEC_GRD = "2"; }else{ SLAB_SIZE_DEC_GRD = "1"; } } //余材 if (ordFl != null && ordFl.equals("2")){ NonordCause = "1A"; OrdNo = null; OrdSeq = null; } DateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss"); String currDate = formatter.format(new Date()); if (RST_SLAB_CUT_DTIME == null || RST_SLAB_CUT_DTIME.equals("")){ RST_SLAB_CUT_DTIME = currDate; } // 切割完成板坯位置为A0,C0垛位 if (LoadLoc != null && (LoadLoc.substring(0,1).equals("L") || LoadLoc.substring(0,1).equals("Z") || LoadLoc.substring(0,1).equals("H")) ) { YardLoc = LoadLoc; LinYardLoc = LoadLoc; } else { if (CcDevNo[0] != null && CcDevNo[0].equals("J2")){ YardLoc = "C0"; LinYardLoc = "C0"; } else { YardLoc = "A0"; LinYardLoc = "A0"; } } //中厚板全部降余材 挂单 if(SlabRt.equals("P") || SlabRt.equals("Z")){ ordFl = "2"; CUR_PROG_CD = "RRC"; OrdNo = ""; OrdSeq = ""; HcrClf = "C"; } //余材 这里有问题 包括了中厚板的坯子也设置成RRC充当待机了 if ((IngrDec != null && !IngrDec.equals("1")) || (SurplmatlYn[i] != null && SurplmatlYn[i].equals("S"))) { /*if (SurplmatlYn[i] != null && SurplmatlYn[i].equals("S")) { NonordCause = "2D"; } else { NonordCause = "2A"; } HcrClf = "C"; ordFl = "2"; CUR_PROG_CD = "RRC"; OrdNo = null; OrdSeq = null;*/ if(SlabRt.equals("P") || SlabRt.equals("Z")){ ordFl = "2"; CUR_PROG_CD = "RRC"; OrdNo = ""; OrdSeq = ""; HcrClf = "C"; }else{ CUR_PROG_CD = "RAB"; HcrClf = "C"; } } if(ordFl.equals("1")&&((IngrDec == null || IngrDec.equals("")) || ED_DIFF_STL_GRD_STA_END_YN1.equals("2"))){ CUR_PROG_CD = "RAB"; HcrClf = "C"; } //中厚板坯料状态 //--------------------------------------中厚板坯料尺寸判定增加 MODY BY WXY------2011-03-09---------------------- if (SlabRt != null && (SlabRt.equals("P")||SlabRt.equals("Z"))){ if (ordFl.equals("2")) { p_slab_status = "01"; } else { p_slab_status = "05"; } //如果成分不合格,返回工序计划 重新设计 中厚板对应的板坯 //20221216 jiangxin 应林海要求输机时自动释放整炉板坯计划 if(DSN_SLAB_NO != null){ PosParameter paramV = new PosParameter(); paramV.setWhereClauseParameter(0,p_slab_status); paramV.setWhereClauseParameter(1,EdPlanSLabNo/*DSN_SLAB_NO*/); this.getDao("mesdao").update("NIG020610_TBD01_SLABDN.update", paramV); paramV = new PosParameter(); paramV.setWhereClauseParameter(0,ChargeNo[0] + SlabNo[i]); this.getDao("mesdao").update("NIG020610_TBD01_DSN_SLABNO.update", paramV); } } //如果是热轧材 //--------------------------------------中厚板坯料尺寸判定增加 MODY BY WXY------2011-03-09---------------------- if (!(SlabRt.equals("P")||SlabRt.equals("Z"))) { //余材 if ((ordFl != null && ordFl.equals("2")) ){ CUR_PROG_CD = "RRC"; OrdNo = null; OrdSeq = null; // 尺寸不合格 }else if(SLAB_SIZE_DEC_GRD != null && SLAB_SIZE_DEC_GRD.equals("2")){ HcrClf = "C"; ordFl = "2"; CUR_PROG_CD = "RRC"; OrdNo = null; OrdSeq = null; NonordCause = "3B"; } else if(OrdNo.substring(0, 1).equals("7"))//坯料外销 20180809 { CUR_PROG_CD = "RFA"; //板坯发货指示待机 } //热送 else if((HcrClf != null && HcrClf.equals("H") && MILL_FL.equals("Y"))&& !CUR_PROG_CD.equals("RAB")) { CUR_PROG_CD = "RBB"; // 冷装 }else if((HcrClf != null && MILL_FL.equals("N"))&&!CUR_PROG_CD.equals("RAB")) { CUR_PROG_CD = "RBA"; HcrClf = "C"; } } String sSlabWay = DecSlabWay(ED_SLAB_NO,HcrClf,SlabRt,sfCode); //增加降级历史记录 20101227 wxy if(ordFl.equals("2")){ try{ cstm = dao.getCallableStatement("ORD_HIS_INSERT.call"); cstm.setString(1, "B"); cstm.setString(2, "S"); cstm.setString(3, ""); cstm.setString(4, "UIG020060"); cstm.setString(5, ""); cstm.setString(6, ""); cstm.setString(7, ""); cstm.setString(8, ChargeNo[0] + SlabNo[i]); cstm.setString(9, "TM"); cstm.setString(10, ""); cstm.setString(11, ""); cstm.setString(12, ""); cstm.setString(13, ""); cstm.execute(); cstm.close(); }catch(Exception ex){ logger.logError(ex.getMessage(), ex); }finally{ if (cstm != null) { try { cstm.close(); } catch (SQLException e) { logger.logWarn(e.getMessage(), e); } } } } //end 增加降级历史记录 //更新数据 param = new PosParameter(); param.setWhereClauseParameter(0, CUR_PROG_CD); param.setWhereClauseParameter(1, "PosSaveSlabCutting"); param.setWhereClauseParameter(2, "PosSaveSlabCutting"); param.setWhereClauseParameter(3, OrdNo); param.setWhereClauseParameter(4, OrdSeq); param.setWhereClauseParameter(5, ordFl); param.setWhereClauseParameter(6, SlabThk[i]); param.setWhereClauseParameter(7, SlabWth[i]); param.setWhereClauseParameter(8, SlabLen[i]); param.setWhereClauseParameter(9, SlabWgt[i]); param.setWhereClauseParameter(10, HcrClf); param.setWhereClauseParameter(11, sSlabWay); param.setWhereClauseParameter(12, SlabRt); param.setWhereClauseParameter(13, LastCutYn[i]); param.setWhereClauseParameter(14, ShiftCd[0]); param.setWhereClauseParameter(15, WkGroup[0]); param.setWhereClauseParameter(16, RegId[0]); param.setWhereClauseParameter(17, SurplmatlYn[i]); param.setWhereClauseParameter(18, YardLoc); param.setWhereClauseParameter(19, SLAB_SIZE_DEC_GRD); param.setWhereClauseParameter(20, ED_DIFF_STL_GRD_STA_END_YN1); param.setWhereClauseParameter(21, CcDevNo[0]); param.setWhereClauseParameter(22, strandNo[i]); param.setWhereClauseParameter(23, NonordCause); param.setWhereClauseParameter(24, twSlabYn[i]); param.setWhereClauseParameter(25, ChargeNo[0] + SlabNo[i]); param.setWhereClauseParameter(26, ChargeNo[0] + SlabNo[i]); getDao("mesdao").update("UIG020060_01.update", param); //写入报表数据 getDao("mesdao").update("UIG020060_report.insert", param); param = new PosParameter(); param.setValueParamter(0, ordFl); param.setValueParamter(1, OrdNo); param.setValueParamter(2, OrdSeq); param.setValueParamter(3, ChargeNo[0] + SlabNo[i]); this.getDao("mesdao").update("UIG020060_SLAB_COMM_D_02.update",param); //因现场会新增板坯,导致产出数据重复,因此加入下列判断 //板坯信息 String sql1 = "SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY REFNOA ORDER BY T.CREATETIME DESC) RN," +" T.* FROM MATAL_DETAIL_ACCOUNTING T where INVID = ? and ACTIVITYID = '11A' AND CRNTMILL = 'LGX') WHERE RN = 1"; param = new PosParameter(); param.setWhereClauseParameter(0, ED_SLAB_NO); rowset = dao.findByQueryStatement(sql1, param); if (rowset.hasNext())//代表重复录入,则新增一条撤回的信息 { row = rowset.next(); String flag = (String)row.getAttribute("EXECJOBFUNC");//现场有可能做完清空流号后再录入板坯,需要加入对11A最新一条数据的判断 if(!"D".equals(flag)){//是D则代表是清空流号删除的实绩,就直接录入新实绩,不是D则需要新增先录入一条撤销 //财务数据上抛 try { cstm = dao.getCallableStatement("UPLOAD_DATA.CAL"); cstm.setString(1, ED_SLAB_NO); cstm.setString(2, "11A"); cstm.setString(3, "D"); cstm.setString(4, "板坯切割实绩录入撤销"); cstm.setString(5, RegId[0]); cstm.registerOutParameter(6, java.sql.Types.VARCHAR); cstm.execute(); cstm.close(); }catch(Exception ex){ ex.printStackTrace(); logger.logError(ex.getMessage(), ex); } finally{ if(cstm != null){ try{ cstm.close(); }catch(Exception e){ e.printStackTrace(); } } } } } if (NonordCause != null) { BefOrdNo = OrdNo; BefOrdSeq = OrdSeq; } // CCM NO set to Charge Master table param = new PosParameter(); //2012.12.14 更改连铸机号获取方式 param.setWhereClauseParameter(0, ChargeNo[0]); String ccDrvNoSql = "SELECT 'J'||SUBSTR(X.CC_DEVNO,2,1 ) CC_DEVNO FROM TBG06_L2_CHARGE_DEVNO X WHERE X.MSG_FLAG = 'N' AND X.CHARGE_NO = ?"; rowset = this.getDao("mesdao").findByQueryStatement(ccDrvNoSql, param); param = new PosParameter(); if(rowset.hasNext()) { row = rowset.next(); param.setValueParamter(0, row.getAttribute("CC_DEVNO")); param.setValueParamter(1, row.getAttribute("CC_DEVNO")); param.setValueParamter(2, ChargeNo[0] ); this.getDao("mesdao").update("UIG020060_CH_COM.update", param); // String ccDrvNoSql_1 = "UPDATE TBG06_L2_CHARGE_DEVNO T SET T.MSG_FLAG = 'C' WHERE T.MSG_FLAG = 'N' AND T.CHARGE_NO = ?"; param = new PosParameter(); param.setValueParamter(0, ChargeNo[0]); this.getDao("mesdao").update("UIG020060_charge_ccdevno_06.update" ,param); } else { param.setValueParamter(0, CcDevNo[0]); param.setValueParamter(1, CcDevNo[0]); param.setValueParamter(2, ChargeNo[0] ); this.getDao("mesdao").update("UIG020060_CH_COM.update", param); } if ( !SurplmatlYn[i].equals("S")) { SendProg_NIE012070( ED_SLAB_NO,OrdNo,OrdSeq,BefOrdNo,BefOrdSeq ,CUR_PROG_CD,"","TM",SlabWgt[i]); SendProg_NIE012080(); } String RejKind = null; // Mill Scheduling slab check and 'H'->'C' check and send to Mill Scheduling reject request /*if (MILL_FL != null && MILL_FL.equals("Y")&&!(SurplmatlYn[i].equals("S"))&& STATUS_CD.equals("B")) { if (SLAB_SIZE_DEC_GRD.equals("2")){ RejKind = "Z"; SendProg_NIF024060( ED_SLAB_NO,RejKind); } else if (IngrDec == null ||(IngrDec != null && IngrDec.equals("2")) || (HcrClf.equals("H") && HcrClf.equals("C"))) { RejKind = "M"; SendProg_NIF024060( ED_SLAB_NO,RejKind); } }*/ //板坯计划信息结束 xtbgcomm.specSlabProcUpt(PlanSlabNo[i], "C"); if(PR_CHARGE_WGT == null)PR_CHARGE_WGT = "0"; if (SurplmatlYn[i] == null || SurplmatlYn[i].equals("") ) { SendProg_NIE012070( PlanSlabNo[i].substring(0,10),"","","","" ,"JJB",PR_BEF_PROG_CD,"CH",PR_CHARGE_WGT ); } /*炉次结束终止炉次 String chargcomm = "SELECT STATUS_CD FROM TBF01_CHARGE_IDX WHERE CHARGE_MANA_NO = '3'||SUBSTR(?,2,8)||'A' "; param = new PosParameter(); param.setWhereClauseParameter(0, ChargeNo[0]); rowset = getDao("mesdao").findByQueryStatement(chargcomm, param); if(rowset.hasNext()) { row = rowset.next(); String status_cd = (String)row.getAttribute("STATUS_CD"); if(!"C".equals(status_cd)){ if(SurplmatlYn[i].equals("S")){ LastSlabCut(ChargeNo[0] + SlabNo[i],"J01-00000A900",MILL_FL,SlabRt,DSN_SLAB_NO); }else{ LastSlabCut(ChargeNo[0] + SlabNo[i],PlanSlabNo[i],MILL_FL,SlabRt,DSN_SLAB_NO); } SendProg_NIE012070(PlanSlabNo[i].substring(0,10),"","","","" ,"JJB",PR_BEF_PROG_CD,"CH",PR_CHARGE_WGT ); } }*/ //炉次结束终止炉次 if (LastCutYn[i] != null && LastCutYn[i].equals("E")) { if(SurplmatlYn[i].equals("S")){ LastSlabCut(ChargeNo[0] + SlabNo[i],"J01-00000A900",MILL_FL,SlabRt,DSN_SLAB_NO); }else{ LastSlabCut(ChargeNo[0] + SlabNo[i],PlanSlabNo[i],MILL_FL,SlabRt,DSN_SLAB_NO); } SendProg_NIE012070(PlanSlabNo[i].substring(0,10),"","","","" ,"JJB",PR_BEF_PROG_CD,"CH",PR_CHARGE_WGT ); } SendProg_NIE012080(); // The cutting slab set roller table yard map // MC1 --> 'A0' , MC2--> 'C0' // After shift roller table exist slab the cutting slab set first roller table for example 'A001' if (LinYardLoc != null && (LinYardLoc.equals("A0") || LinYardLoc.equals("C0"))) { PosParameter param13 = new PosParameter(); param13.setWhereClauseParameter(0, ED_SLAB_NO); param13.setWhereClauseParameter(1, LinYardLoc); PosRowSet slabExistVo = getDao("mesdao").find("NIG020610_YARD_SLAB_EXIST.select", param13); if (!slabExistVo.hasNext()) { PosParameter param15 = new PosParameter(); param15.setWhereClauseParameter(0, LinYardLoc); param15.setWhereClauseParameter(1, ED_SLAB_NO); PosRowSet YardMapVo = getDao("mesdao").find("NIG020610_YARD.select", param15); while (YardMapVo.hasNext()) { PosRow YardMapROW = YardMapVo.next(); String YARD_ADDR = (String) YardMapROW.getAttribute("YARD_ADDR"); String YARD_LAY = (String) YardMapROW.getAttribute("YARD_LAY"); String SLAB_NO = (String) YardMapROW.getAttribute("SLAB_NO"); String LINE_ADDR = YARD_ADDR + YARD_LAY; PosParameter param16 = new PosParameter(); param16.setValueParamter(0, SLAB_NO); param16.setValueParamter(1, LINE_ADDR); this.getDao("mesdao").update("NIG020610_YARD.update", param16); } String UpdLoc = YardLoc + "01"; PosParameter param14 = new PosParameter(); param14.setValueParamter(0, ED_SLAB_NO); param14.setValueParamter(1, UpdLoc); this.getDao("mesdao").update("NIG020610_YARD.update",param14); } } //更新热装热送的轧制计划的板坯号(只执行一次) 20240427 if(i == status.length - 1){ try { cstm = dao.getCallableStatement("HCR_SLABNO_UPD.CAL"); cstm.setString(1, ChargeNo[0].substring(0,9)); cstm.execute(); cstm.close(); }catch(Exception ex){ ex.printStackTrace(); logger.logError(ex.getMessage(), ex); } finally{ if(cstm != null){ try{ cstm.close(); }catch(Exception e){ e.printStackTrace(); } } } } //财务数据上抛 try { cstm = dao.getCallableStatement("UPLOAD_DATA.CAL"); cstm.setString(1, ED_SLAB_NO); cstm.setString(2, "11A"); cstm.setString(3, "N"); cstm.setString(4, "板坯切割实绩录入"); cstm.setString(5, RegId[0]); cstm.registerOutParameter(6, java.sql.Types.VARCHAR); cstm.execute(); cstm.close(); }catch(Exception ex){ ex.printStackTrace(); logger.logError(ex.getMessage(), ex); } finally{ if(cstm != null){ try{ cstm.close(); }catch(Exception e){ e.printStackTrace(); } } } } } context.put("MESSAGES","操作成功!"); return PosBizControlConstants.SUCCESS; } public String getSubSlabNo(PosContext context,String slabNo,String strandNo){ String subSlabNo = null; if(strandNo == null || strandNo.equals("")){ context.put("MESSAGES",slabNo + " 缺少板坯流号,操作失败! "); return PosBizControlConstants.SUCCESS; } PosParameter param = new PosParameter(); param.setWhereClauseParameter(0, slabNo); param.setWhereClauseParameter(1, strandNo); PosRowSet rowset = this.getDao("mesdao").find("", param); if(rowset.hasNext()){ PosRow row = rowset.next(); } return subSlabNo; } public void LastSlabCut(String SlabNo,String PlanSlabNo,String MillFl,String SlabRt,String DsnSlabNo) { PosParameter param9 = new PosParameter(); param9.setValueParamter(0, "C" ); param9.setValueParamter(1, "JJB" ); param9.setValueParamter(2, "3" + SlabNo.substring(1,10)); this.getDao("mesdao").update("NIG020610_SPEC_CHARGE.update", param9); PosParameter param10 = new PosParameter(); param10.setValueParamter(0, "C" ); param10.setValueParamter(1, "3" + SlabNo.substring(1,10)); this.getDao("mesdao").update("NIG020610_SPEC_CHARGE_IDX.update", param10); PosParameter param11 = new PosParameter(); param11.setValueParamter(0, "3" ); param11.setValueParamter(1, "JJB" ); param11.setValueParamter(2, "CCM_CUT" ); param11.setValueParamter(3, SlabNo.substring(0,10) ); this.getDao("mesdao").update("NIG020610_CHARGE_COMM.update", param11); param11 = new PosParameter(); param11.setValueParamter(0, "3" ); param11.setValueParamter(1, "JJB" ); param11.setValueParamter(2, "CCM_CUT" ); param11.setValueParamter(3, SlabNo.substring(0,10) ); this.getDao("mesdao").update("NIG020610_CHARGE_COMM_D.update", param11); PosParameter param12 = new PosParameter(); param12.setValueParamter(0, "3" ); param12.setValueParamter(1, SlabNo.substring(0,10) ); this.getDao("mesdao").update("NIG020610_STLMAKE_PROG.update", param12); // if slab cutting result less than slab schedule then reminding schedule should be finished PosParameter paramB = new PosParameter(); paramB.setWhereClauseParameter(0, "3" + SlabNo.substring(1,10)); PosRowSet LastSlabVo = getDao("mesdao").find("NIG020610_SPEC_LAST_SLAB.select", paramB); if (LastSlabVo.hasNext() ) { PosRow LastSlabROW = LastSlabVo.next(); String SLAB_EDIT_NO = (String)LastSlabROW.getAttribute("SLAB_EDIT_NO"); if ( PlanSlabNo.substring(10,13).compareTo(SLAB_EDIT_NO) < 0) { PosParameter paramC = new PosParameter(); paramC.setWhereClauseParameter(0, SlabNo); paramC.setWhereClauseParameter(1, PlanSlabNo); PosRowSet remSlabVo = getDao("mesdao").find("NIG020610_REM_SLAB.select", paramC); while(remSlabVo.hasNext()) { PosRow remSlabROW = remSlabVo.next(); String RemSlabNo = (String)remSlabROW.getAttribute("SLAB_NO"); String RemPlnSlabNo = (String)remSlabROW.getAttribute("PLAN_SLAB_NO"); String RemDsnSlabNo = (String)remSlabROW.getAttribute("DSN_SLAB_NO"); String ordNo = (String)remSlabROW.getAttribute("ORD_NO"); String ordSeq = (String)remSlabROW.getAttribute("ORD_SEQ"); String ordCustCD = (String)remSlabROW.getAttribute("ORDCUST_CD"); //增加降级历史记录 20101227 wxy //增加降级历史记录 20101227 wxy CallableStatement cstm = null; PosParameter 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, "UIG020060"); cstm.setString(5, ""); cstm.setString(6, ""); cstm.setString(7, ""); cstm.setString(8, RemSlabNo); 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 增加降级历史记录 PosParameter param13 = new PosParameter(); param13.setValueParamter(0, "5" ); param13.setValueParamter(1, "3" ); param13.setValueParamter(2, RemSlabNo ); this.getDao("mesdao").update("NIG020610_SLAB_END.update", param13); param13 = new PosParameter(); param13.setWhereClauseParameter(0, RemSlabNo); this.getDao("mesdao").update("NIG020610_SLAB_END_D.update",param13); try{ cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL"); cstm.setString(1, RemSlabNo); cstm.setString(2, "11A"); cstm.setString(3, "D"); cstm.setString(4, "板坯强制结束"); cstm.setString(5, "LastSlabCut"); 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); } } } /*if (MillFl != null && MillFl.equals("Y") ) { SendProg_NIF024060( RemSlabNo,"M"); }*/ PosParameter paramD = new PosParameter(); paramD.setWhereClauseParameter(0, RemPlnSlabNo ); PosRowSet remSpecVo = getDao("mesdao").find("NIG020610_SLAB_SPEC.select", paramD); while (remSpecVo.hasNext() ){ PosRow remSpecROW = remSpecVo.next(); Number nSlabEdtSeq = (Number)remSpecROW.getAttribute("SLAB_EDT_SEQ"); String SlabManaNo = (String)remSpecROW.getAttribute("SLAB_MANA_NO"); PosParameter paramE = new PosParameter(); paramE.setValueParamter(0, "C" ); paramE.setValueParamter(1, SlabManaNo ); this.getDao("mesdao").update("NIG020610_SPEC_SLAB.update", paramE); PosParameter paramF = new PosParameter(); paramF.setValueParamter(0, "C" ); paramF.setValueParamter(1, nSlabEdtSeq ); this.getDao("mesdao").update("NIG020610_SPEC_SLAB_D.update", paramF); } if (SlabRt.equals("P") || SlabRt.equals("Z") ) { PosParameter paramV = new PosParameter(); paramV.setWhereClauseParameter(0,"01"); paramV.setWhereClauseParameter(1,RemDsnSlabNo); this.getDao("mesdao").update("NIG020610_TBD01_SLABDN.update", paramV); } } } } } public String DecSlabWay(String Slabno,String hcrcd,String slabway,String sf) { logger.logInfo("PosSaveSlabCutting---> DecSlabWay" ); String way = null; if (hcrcd != null && hcrcd.equals("C") ) { if ( (sf != null && sf.equals("Y")) || (slabway != null && slabway.equals("P"))) { way = "1"; } else { way = "2"; } } else { way = "3"; } return way; } public String DiffStlGrd(String chargeNo, String McNo,String StlGrd) { String Get_StlGrd = null; PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, chargeNo); param3.setWhereClauseParameter(1, McNo); param3.setWhereClauseParameter(2, chargeNo); PosRowSet DiffStlGrdVO = getDao("mesdao").find("NIG020610_DIFF_STL_GRD.select", param3); while ( DiffStlGrdVO.hasNext()) { PosRow DiffStlGrdROW = DiffStlGrdVO.next(); Get_StlGrd = (String)DiffStlGrdROW.getAttribute("STL_GRD"); if ( Get_StlGrd != null && StlGrd != null ) { if (!StlGrd.equals(Get_StlGrd) ) { return Get_StlGrd; } return null; } } return null; } // SLAB SIZE DECISION ( RESULT SLAB WGT,ORDER WGT COMPARE) // TBG02_SLAB_COMM--> SLAB_WGT // TBG02_SLAB_COMM_D --> ORD_NO,ORD_SEQ // TBA01_ORD_LINE --> PROD_WGT_MIN,PROD_WGT_MAX // public String SlabSizeDec(BigDecimal slabThk,BigDecimal slabWth,BigDecimal slabLen,String SlabNo, String PlanSlabNo,BigDecimal SlabWgt) // { // // logger.logInfo("XinSaveSlabComm SlabWgt:"+SlabWgt); // BigDecimal SlabThk = slabThk; // BigDecimal SlabWth = slabWth; // BigDecimal SlabLen = slabLen; // BigDecimal ordLen = new BigDecimal(0); // BigDecimal ordWgt = new BigDecimal(0); // BigDecimal coilOutDia = new BigDecimal(0); // BigDecimal coilInDia = new BigDecimal(0); // // // BigDecimal ordThk = new BigDecimal(0); // BigDecimal ordWth = new BigDecimal(0); // BigDecimal coilThk = new BigDecimal(0); // BigDecimal coilWth = new BigDecimal(0); // // PosParameter param1 = new PosParameter(); // param1.setWhereClauseParameter(0, SlabNo); // PosRowSet CommDVO = getDao("mesdao").find("NIG020610_SLAB_COMM_D.select", param1); // PosRowSet CommDVO2 = getDao("mesdao").find("UIG020060_SLAB_COMMD_ORD.select",param1); // // if(CommDVO2.hasNext()){ // PosRow row = CommDVO2.next(); // ordThk = (BigDecimal)row.getAttribute("SLAB_THK"); // ordWth = (BigDecimal)row.getAttribute("SLAB_WTH"); // coilThk = (BigDecimal)row.getAttribute("ORD_THK"); // coilWth = (BigDecimal)row.getAttribute("ORD_WTH"); // // coilInDia = (BigDecimal)row.getAttribute("COIL_INDIA"); // } // BigDecimal total = ordWth.add(new BigDecimal(100)); // if(SlabWth.compareTo(ordWth) < 0||total.compareTo(SlabWth) < 0){ // return "N"; // } // // param1 = new PosParameter(); // PosRowSet rateVo = getDao("mesdao").find("UIG020060_proc_rate.select", param1); // BigDecimal procRate = new BigDecimal(1); // if(rateVo.hasNext()){ // PosRow posrow = rateVo.next(); // procRate = (BigDecimal)posrow.getAttribute("PROC_RATE"); // } // if ( CommDVO.hasNext()) { // // PosRow CommDROW = CommDVO.next(); // // BigDecimal PROD_WGT_MIN = (BigDecimal)CommDROW.getAttribute("PROD_WGT_MIN"); // BigDecimal PROD_WGT_MAX = (BigDecimal)CommDROW.getAttribute("PROD_WGT_MAX"); // // logger.logInfo("XinSaveSlabComm PROD_WGT_MIN:"+PROD_WGT_MIN); // // logger.logInfo(PROD_WGT_MIN); // logger.logInfo(PROD_WGT_MAX); // ordWgt = SlabWgt.multiply(procRate); // ordWgt = ordWgt.divide(new BigDecimal(100)); // logger.logInfo("XinSaveSlabComm ordWgt:"+ ordWgt); // if(PROD_WGT_MIN == null)PROD_WGT_MIN = new BigDecimal(0); // if(PROD_WGT_MAX == null)PROD_WGT_MAX = new BigDecimal(0); // //如果板坯重量不在订单重量范围内 // if (ordWgt.compareTo(PROD_WGT_MIN) < 0 || PROD_WGT_MAX.compareTo(ordWgt) < 0 ) { // //取消订单 // return "N"; // // } // } // logger.logInfo("ordWgt=" + ordWgt ); // logger.logInfo("ordThk=" + ordThk ); // logger.logInfo("SlabWth=" + SlabWth ); // ordLen = ordWgt.multiply(new BigDecimal(1000000)); // ordLen = ordLen.divide(coilThk,3,BigDecimal.ROUND_HALF_UP); // ordLen = ordLen.divide(coilWth,3,BigDecimal.ROUND_HALF_UP); // ordLen = ordLen.divide(new BigDecimal(7.8),0,BigDecimal.ROUND_HALF_UP); // // coilOutDia = new BigDecimal(Math.sqrt(ordWgt.multiply(new BigDecimal(1000000).multiply(new BigDecimal(4)).divide(new BigDecimal(7.8*3.14*0.98),3,BigDecimal.ROUND_HALF_UP).divide(SlabWth,0,BigDecimal.ROUND_HALF_UP)).add(coilInDia.multiply(coilInDia)).doubleValue())); // logger.logInfo("-------------slabThk" + slabThk + "--slabWth" + slabWth + "--slabLen" + slabLen + "--ordLen" + ordLen + "--ordWgt" + ordWgt + "--coilOutDia" + coilOutDia + "--" ); // param1 = new PosParameter(); // param1.setWhereClauseParameter(0,slabThk); // param1.setWhereClauseParameter(1,slabWth); // param1.setWhereClauseParameter(2,slabLen); // param1.setWhereClauseParameter(3,ordLen); // param1.setWhereClauseParameter(4,ordWgt); // param1.setWhereClauseParameter(5,coilOutDia); // param1.setWhereClauseParameter(6,SlabNo); // int rowset = getDao("mesdao").update("UIG020060_slab_comm_d.update",param1); // return "Y"; // } 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); } public String SlabSizeDec(String slabRt,BigDecimal slabThk, BigDecimal slabWth, BigDecimal slabLen, String SlabNo, String PlanSlabNo, BigDecimal SlabWgt) { logger.logInfo("XinSaveSlabComm SlabWgt:" + SlabWgt); BigDecimal SlabThk = slabThk; BigDecimal SlabWth = slabWth; BigDecimal SlabLen = slabLen; BigDecimal ordThk = new BigDecimal(0); BigDecimal ordWth = new BigDecimal(0); BigDecimal ordLen = new BigDecimal(0); BigDecimal ordWgt = new BigDecimal(0); BigDecimal coilOutDia = new BigDecimal(0); BigDecimal coilInDia = new BigDecimal(0); if(slabRt.equals("Z")||slabRt.equals("P")){ //--- return "N"; //--------------------------中厚板移送的板坯规格如何判定?? }else if(slabRt.equals("H")){ PosParameter param1 = new PosParameter(); param1.setWhereClauseParameter(0, SlabNo); PosRowSet CommDVO = getDao("mesdao").find( "NIG020610_SLAB_COMM_D.select", param1); PosRowSet CommDVO2 = getDao("mesdao").find( "UIG020060_SLAB_COMMD_ORD.select", param1); if (CommDVO2.hasNext()) { PosRow row = CommDVO2.next(); ordThk = (BigDecimal) row.getAttribute("ORD_THK"); ordWth = (BigDecimal) row.getAttribute("ORD_WTH"); coilInDia = (BigDecimal) row.getAttribute("COIL_INDIA"); } //板坯宽度 < 订单宽度 或者 板坯宽度 > 订单宽度+100 则 尺寸不合格 BigDecimal total = ordWth.add(new BigDecimal(100)); if (SlabWth.compareTo(ordWth) < 0 || total.compareTo(SlabWth) < 0) { return "N"; } param1 = new PosParameter(); PosRowSet rateVo = getDao("mesdao").find("UIG020060_proc_rate.select", param1); BigDecimal procRate = new BigDecimal(1); if (rateVo.hasNext()) { PosRow posrow = rateVo.next(); procRate = (BigDecimal) posrow.getAttribute("PROC_RATE"); } if (CommDVO.hasNext()) { PosRow CommDROW = CommDVO.next(); BigDecimal PROD_WGT_MIN = (BigDecimal) CommDROW .getAttribute("PROD_WGT_MIN"); BigDecimal PROD_WGT_MAX = (BigDecimal) CommDROW .getAttribute("PROD_WGT_MAX"); logger.logInfo("XinSaveSlabComm PROD_WGT_MIN:" + PROD_WGT_MIN); logger.logInfo(PROD_WGT_MIN); logger.logInfo(PROD_WGT_MAX); ordWgt = SlabWgt.multiply(procRate); ordWgt = ordWgt.divide(new BigDecimal(100)); logger.logInfo("XinSaveSlabComm ordWgt:" + ordWgt); if (PROD_WGT_MIN == null) PROD_WGT_MIN = new BigDecimal(0); if (PROD_WGT_MAX == null) PROD_WGT_MAX = new BigDecimal(300000); // 如果板坯重量不在订单重量范围内 if (ordWgt.compareTo(PROD_WGT_MIN) < 0 || PROD_WGT_MAX.compareTo(ordWgt) < 0) { // 取消订单 return "N"; } } logger.logInfo("ordWgt=" + ordWgt); logger.logInfo("ordThk=" + ordThk); logger.logInfo("SlabWth=" + SlabWth); ordLen = ordWgt.multiply(new BigDecimal(1000000)); ordLen = ordLen.divide(ordThk, 3, BigDecimal.ROUND_HALF_UP); ordLen = ordLen.divide(ordWth, 3, BigDecimal.ROUND_HALF_UP); ordLen = ordLen.divide(new BigDecimal(7.85), 0,BigDecimal.ROUND_HALF_UP); coilOutDia = new BigDecimal(Math.sqrt(ordWgt.multiply( new BigDecimal(1000000).multiply(new BigDecimal(4)).divide( new BigDecimal(7.85 * 3.14 * 0.98), 3, BigDecimal.ROUND_HALF_UP).divide(ordWth, 0, BigDecimal.ROUND_HALF_UP)).add( coilInDia.multiply(coilInDia)).doubleValue())); param1 = new PosParameter(); param1.setWhereClauseParameter(0, slabThk); param1.setWhereClauseParameter(1, slabWth); param1.setWhereClauseParameter(2, slabLen); param1.setWhereClauseParameter(3, ordLen); param1.setWhereClauseParameter(4, ordWgt); param1.setWhereClauseParameter(5, coilOutDia); param1.setWhereClauseParameter(6, SlabNo); getDao("mesdao").update("UIG020060_slab_comm_d.update",param1); return "Y"; } return ""; } }