package xin.glue.ui.H.H05; import java.math.BigDecimal; import java.sql.CallableStatement; import java.sql.SQLException; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Date; import xin.glue.ui.common.PosGridSave; import xin.glue.ui.common.component.PosSiteLog; 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.vo.PosParameter; import com.posdata.glue.dao.vo.PosRow; import com.posdata.glue.dao.vo.PosRowSet; /* * 这里做钢卷的盘入盘出操作。必须设置权限 * @author TangLiang 唐亮 * @data 2009.07.11 */ public class SaveCOIL_IO extends PosActivity { public String runActivity(PosContext context) { try { // 钢卷号 String[] coil_no = (String[]) context.get("coil_no"); // 盘出 String[] COIL_OUT = (String[]) context.get("COIL_OUT"); // 盘入 String[] COIL_IN = (String[]) context.get("COIL_IN"); //外卖盘出 String[] COIL_SALE = (String[]) context.get("COIL_SALE"); // 废钢盘出 String[] COIL_END = (String[]) context.get("COIL_END"); // 操作人 String[] REG_ID = (String[]) context.get("REG_ID"); // 盘入的垛位 String[] CUR_LOAD_LOC = (String[]) context.get("CUR_LOAD_LOC"); String coil_no_tmp = null; String OLD_SAMPL_NO = null; String CUR_LOAD_LOC_TMP = null; String OLD_SAMPL_NO_TMP = null; String CUR_PROG_CD = null; String coil_stat = null; String SHIP_PROG_CD = null; // 这里的是钢卷的状态 String CUR_PROG_CD_C = null; String TRNF_DTIME = null; String slab_no = null; String ordNo = ""; String ordSeq = ""; String ordFl = ""; // 判断是做盘入操作还是做盘出操作 if (COIL_IN[0].equals("1") && "".equals(COIL_OUT[0])&&"".equals(COIL_SALE[0])&&"".equals(COIL_END[0])) { // 这里做盘入操作,首先要检查钢卷号是否存在系统。不存在的情况下给予提示 PosParameter param1 = new PosParameter(); param1.setWhereClauseParameter(0, coil_no[0]); PosRowSet rows = getDao("mesdao").find("UIH051600_02.select", param1); if (rows.hasNext()) { PosRow row = rows.next(); OLD_SAMPL_NO = (String) row.getAttribute("OLD_SAMPL_NO"); coil_no_tmp = (String) row.getAttribute("COIL_NO"); slab_no = (String) row.getAttribute("SLAB_NO"); coil_stat = (String) row.getAttribute("COIL_STAT"); CUR_PROG_CD_C = (String) row.getAttribute("CUR_PROG_CD"); TRNF_DTIME = (String) row.getAttribute("TRNF_DTIME"); SHIP_PROG_CD = (String) row.getAttribute("SHIP_PROG_CD"); // add by jungan 2010-12-27 插入降余材历史记录 ordNo = row.getAttribute("ORD_NO") != null ? ((String) row.getAttribute("ORD_NO")).trim() : ""; ordSeq = row.getAttribute("ORD_SEQ") != null ?((String) row.getAttribute("ORD_SEQ")).trim() : ""; ordFl = row.getAttribute("ORD_FL") != null ? ((String) row.getAttribute("ORD_FL")).trim() : ""; if (!"".equals(OLD_SAMPL_NO) && null != OLD_SAMPL_NO) { // 这里必须加入此卷是否已经正常发货的提示,正常发货的卷暂时不允许发货 if (coil_stat.equals("3") && ((CUR_PROG_CD_C.equals("SFF") && TRNF_DTIME != null && SHIP_PROG_CD.equals("08")) || CUR_PROG_CD_C.equals("SGF"))) { // 抛出异常 logger.logInfo("SaveCOIL_IO类中,需要盘入库的" + coil_no_tmp + "属于正常发货出库,不能进行盘入操作!"); String vtemp = "FAHUO"; context.put("rs", vtemp); } else { if (!"".equals(CUR_LOAD_LOC[0]) && null != CUR_LOAD_LOC[0]) { // 这里还需要判断垛位上是否存在卷信息 PosParameter param11 = new PosParameter(); param11.setWhereClauseParameter(0, CUR_LOAD_LOC[0]); PosRowSet rows1 = getDao("mesdao").find( "UIH051600_04.select", param11); if (rows1.hasNext()) { PosRow row1 = rows1.next(); CUR_LOAD_LOC_TMP = (String) row1 .getAttribute("COIL_NO"); if ("".equals(CUR_LOAD_LOC_TMP) || null == CUR_LOAD_LOC_TMP) { // 人工盘入库的卷,改为余材 // 更新钢卷公共表 PosParameter param2 = new PosParameter(); param2.setWhereClauseParameter(0, CUR_LOAD_LOC[0]); param2.setWhereClauseParameter(1, REG_ID[0]); param2.setWhereClauseParameter(2, OLD_SAMPL_NO); getDao("mesdao").update( "UIH051600_01.update", param2); // add by jungan 2010-12-27 插入降余材历史记录 if (ordFl.equals("1")) { CallableStatement cstm = getDao( "mesdao") .getCallableStatement( "UIH051600_01.call"); cstm.setString(1, "B"); cstm.setString(2, "S"); cstm.setString(3, REG_ID[0]); cstm.setString(4, "UIH051600"); cstm.setString(5, ""); cstm.setString(6, ""); cstm.setString(7, ""); cstm.setString(8, OLD_SAMPL_NO); cstm.setString(9, "CR"); cstm.setString(10, ordNo); cstm.setString(11, ordSeq); cstm.setString(12, ""); cstm.setString(13, ""); boolean res = cstm.execute(); cstm.close(); logger .logInfo("UIM051600 SaveCOIL_IO 盘入保存历史记录结果 : " + res); } // 更新钢卷公共_D 表 PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, coil_no_tmp); getDao("mesdao").update( "UIH051600_02.update", param3); // 把钢卷信息录入垛位表 PosParameter param4 = new PosParameter(); param4.setWhereClauseParameter(0, OLD_SAMPL_NO); param4 .setWhereClauseParameter( 1, CUR_LOAD_LOC[0] .substring(0, 5)); param4 .setWhereClauseParameter( 2, CUR_LOAD_LOC[0] .substring(5, 7)); param4 .setWhereClauseParameter( 3, CUR_LOAD_LOC[0] .substring(7, 8)); param4 .setWhereClauseParameter( 4, CUR_LOAD_LOC[0] .substring(8, 9)); getDao("mesdao").update( "UIH051600_03.update", param4); // 这里还需要修改板坯公共表,如果已经做了计划的板坯就不能动了 PosParameter param111 = new PosParameter(); param111.setWhereClauseParameter(0, slab_no); PosRowSet rows11 = getDao("mesdao") .find("UIH051600_06.select", param111); if (rows11.hasNext()) { PosRow row11 = rows11.next(); CUR_PROG_CD = (String) row11 .getAttribute("CUR_PROG_CD"); if (CUR_PROG_CD.equals("RBB")) { // 如果此板坯已做计划,给出提示 logger .logInfo("SaveCOIL_IO类中,需要盘入库的" + coil_no_tmp + "卷对应的板坯:" + slab_no + "已经做计划。请联系轧制计划员处理!!"); String vtemp = "SLAB_NO"; context.put("rs", vtemp); } else { PosParameter param5 = new PosParameter(); param5.setWhereClauseParameter( 0, slab_no); getDao("mesdao").update( "UIH051600_06.update", param5); // 还需要清空库存垛位表 PosParameter param6 = new PosParameter(); param6.setWhereClauseParameter( 0, slab_no); getDao("mesdao").update( "UIH051600_07.update", param6); } } } else { // 抛出异常 logger.logInfo("SaveCOIL_IO类中,需要盘入库的" + coil_no_tmp + "卷需要存放的堆位上面存在钢卷!"); String vtemp = "CUR_LOAD_LOC"; context.put("rs", vtemp); } } else { // 抛出异常 logger.logInfo("SaveCOIL_IO类中,需要盘入库的" + coil_no_tmp + "卷需要存放的堆位上面存在钢卷!"); String vtemp = "CUR_LOAD_LOC"; context.put("rs", vtemp); } } else { // 抛出异常 logger.logInfo("SaveCOIL_IO类中,需要盘入库的" + coil_no_tmp + "卷不存在垛位数据!"); String vtemp = "CUR_LOAD_LOC_NO"; context.put("rs", vtemp); } } } else { // 抛出异常 logger.logInfo("SaveCOIL_IO类中,需要盘入库的" + coil_no_tmp + "不存在,请确认后再进行相应的处理!"); String vtemp = "ERROR"; context.put("rs", vtemp); } } else { // 抛出异常 logger.logInfo("SaveCOIL_IO类中,需要盘入库的" + coil_no_tmp + "不存在,请确认后再进行相应的处理!"); String vtemp = "ERROR"; context.put("rs", vtemp); } } else if (COIL_OUT[0].equals("2") && "".equals(COIL_IN[0])&& "".equals(COIL_SALE[0])&& "".equals(COIL_END[0])) { PosParameter param1 = new PosParameter(); param1.setWhereClauseParameter(0, coil_no[0]); PosRowSet rows = getDao("mesdao").find("UIH051600_03.select", param1); if (rows.hasNext()) { PosRow row = rows.next(); OLD_SAMPL_NO = (String) row.getAttribute("OLD_SAMPL_NO"); coil_no_tmp = (String) row.getAttribute("COIL_NO"); CUR_PROG_CD = (String) row.getAttribute("CUR_PROG_CD"); // add by jungan 2010-12-27 插入降余材历史记录 ordNo = row.getAttribute("ORD_NO") != null ? ((String) row.getAttribute("ORD_NO")).trim() : ""; ordSeq = row.getAttribute("ORD_SEQ") != null ?((String) row.getAttribute("ORD_SEQ")).trim() : ""; ordFl = row.getAttribute("ORD_FL") != null ? ((String) row.getAttribute("ORD_FL")).trim() : ""; if (!"".equals(OLD_SAMPL_NO) && null != OLD_SAMPL_NO) { if (CUR_PROG_CD.equals("SFB")) { // 抛出异常 logger.logInfo("SaveCOIL_IO类中,需要盘出库的" + coil_no_tmp + "已经做了下车计划,请确认后再进行相应的处理!"); String vtemp = "CUR_PROG_CD"; context.put("rs", vtemp); } else { // 这里进行人工出库操作 PosParameter param2 = new PosParameter(); param2.setWhereClauseParameter(0, REG_ID[0]); param2.setWhereClauseParameter(1, OLD_SAMPL_NO); getDao("mesdao").update("UIH051600_04.update", param2); // add by jungan 2010-12-27 插入降余材历史记录 if (ordFl.equals("1")) { CallableStatement cstm = getDao("mesdao") .getCallableStatement( "UIH051600_01.call"); cstm.setString(1, "B"); cstm.setString(2, "S"); cstm.setString(3, REG_ID[0]); cstm.setString(4, "UIH051600"); cstm.setString(5, ""); cstm.setString(6, ""); cstm.setString(7, ""); cstm.setString(8, OLD_SAMPL_NO); cstm.setString(9, "CR"); cstm.setString(10, ordNo); cstm.setString(11, ordSeq); cstm.setString(12, ""); cstm.setString(13, ""); boolean res = cstm.execute(); cstm.close(); logger .logInfo("UIM051600 SaveCOIL_IO 盘出保存历史记录结果 : " + res); } // 更新钢卷公共_D 表 PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, coil_no_tmp); getDao("mesdao").update("UIH051600_02.update", param3); // 把钢卷信息清除垛位表 PosParameter param4 = new PosParameter(); param4.setWhereClauseParameter(0, OLD_SAMPL_NO); getDao("mesdao").update("UIH051600_05.update", param4); } } else { // 抛出异常 logger.logInfo("SaveCOIL_IO类中,需要盘出库的" + coil_no_tmp + "不存在,请确认后再进行相应的处理!"); String vtemp = "ERROR"; context.put("rs", vtemp); } } else { // 抛出异常 logger.logInfo("SaveCOIL_IO类中,需要盘出库的" + coil_no_tmp + "不存在,请确认后再进行相应的处理!"); String vtemp = "ERROR"; context.put("rs", vtemp); } } else if ((COIL_SALE[0].equals("3")||COIL_END[0].equals("4")) && "".equals(COIL_OUT[0])&& "".equals(COIL_IN[0])){ DateFormat formatter = new SimpleDateFormat("yyyyMMdd"); String currDate = formatter.format(new Date()); String seqno="FG"+currDate; String dlivnoNEXT; String wg; dlivnoNEXT=dlivno(seqno);//生成废钢编号 PosParameter param1 = new PosParameter(); param1.setWhereClauseParameter(0, coil_no[0]); PosRowSet rows = getDao("mesdao").find("UIH051600_03.select", param1); if (rows.hasNext()) { PosRow row = rows.next(); OLD_SAMPL_NO = (String) row.getAttribute("OLD_SAMPL_NO"); coil_no_tmp = (String) row.getAttribute("COIL_NO"); CUR_PROG_CD = (String) row.getAttribute("CUR_PROG_CD"); wg =row.getAttribute("EXTSHAPE_DEC_GRD") != null ? ((String) row.getAttribute("EXTSHAPE_DEC_GRD")).trim() : ""; // add by jungan 2010-12-27 插入降余材历史记录 ordNo = row.getAttribute("ORD_NO") != null ? ((String) row.getAttribute("ORD_NO")).trim() : ""; ordSeq = row.getAttribute("ORD_SEQ") != null ?((String) row.getAttribute("ORD_SEQ")).trim() : ""; ordFl = row.getAttribute("ORD_FL") != null ? ((String) row.getAttribute("ORD_FL")).trim() : ""; if (!"".equals(OLD_SAMPL_NO) && null != OLD_SAMPL_NO) { if ("".equals(wg) || !("4".equals(wg))) { // 抛出异常 logger.logInfo("SaveCOIL_IO类中,需要盘出库的" + coil_no_tmp + "未判废,请确认后再进行相应的处理!"); String vtemp = "CUR_PROG_CD1"; context.put("rs", vtemp); return PosBizControlConstants.SUCCESS; } if (CUR_PROG_CD.equals("SFB")) { // 抛出异常 logger.logInfo("SaveCOIL_IO类中,需要盘出库的" + coil_no_tmp + "已经做了下车计划,请确认后再进行相应的处理!"); String vtemp = "CUR_PROG_CD"; context.put("rs", vtemp); } else { // 这里进行人工出库操作 PosParameter param2 = new PosParameter(); param2.setWhereClauseParameter(0, REG_ID[0]); param2.setWhereClauseParameter(1, dlivnoNEXT); param2.setWhereClauseParameter(2, OLD_SAMPL_NO); getDao("mesdao").update("UIH051600_08.update", param2); // add by jungan 2010-12-27 插入降余材历史记录 if (ordFl.equals("1")) { CallableStatement cstm = getDao("mesdao") .getCallableStatement( "UIH051600_01.call"); cstm.setString(1, "B"); cstm.setString(2, "S"); cstm.setString(3, REG_ID[0]); cstm.setString(4, "UIH051600"); cstm.setString(5, ""); cstm.setString(6, ""); cstm.setString(7, ""); cstm.setString(8, OLD_SAMPL_NO); cstm.setString(9, "CR"); cstm.setString(10, ordNo); cstm.setString(11, ordSeq); cstm.setString(12, ""); cstm.setString(13, ""); boolean res = cstm.execute(); cstm.close(); logger .logInfo("UIM051600 SaveCOIL_IO 盘出保存历史记录结果 : " + res); } // 更新钢卷公共_D 表 PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, coil_no_tmp); getDao("mesdao").update("UIH051600_02.update", param3); // 把钢卷信息清除垛位表 PosParameter param4 = new PosParameter(); param4.setWhereClauseParameter(0, OLD_SAMPL_NO); getDao("mesdao").update("UIH051600_05.update", param4); } } else { // 抛出异常 logger.logInfo("SaveCOIL_IO类中,需要盘出库的" + coil_no_tmp + "不存在,请确认后再进行相应的处理!"); String vtemp = "ERROR"; context.put("rs", vtemp); } } else { // 抛出异常 logger.logInfo("SaveCOIL_IO类中,需要盘出库的" + coil_no_tmp + "不存在,请确认后再进行相应的处理!"); String vtemp = "ERROR"; context.put("rs", vtemp); } } } catch (Exception e) { // TODO: handle exception logger.logError("SaveCOIL_IO数据库操作异常a"); logger.logError(e.getMessage()); } return PosBizControlConstants.SUCCESS; } private String dlivno(String syddate) { String dlivno = ""; PosParameter param1 = new PosParameter(); param1.setWhereClauseParameter(0, syddate); PosRowSet rows = getDao("mesdao").find("UIH051600_07.select", param1); try { if (rows.hasNext()) { PosRow row = rows.next(); String temp=""; if("".equals((String) row.getAttribute("WDLIVNO"))||(String) row.getAttribute("WDLIVNO")==null) { dlivno=syddate+"01"; }else{ temp = (String) row.getAttribute("WDLIVNO"); temp = temp.substring(10); int aa=Integer.parseInt(temp) + 1; temp = new DecimalFormat("00").format(aa); dlivno=syddate+temp; } } else{ dlivno=syddate+"01"; } } catch (Exception r) { } finally { try { if (null != rows) { } } catch (Exception e) { } } return dlivno; } }