package xin.glue.ui.G.G02; import java.math.BigDecimal; import java.sql.CallableStatement; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import org.apache.commons.lang.StringUtils; import xin.glue.ui.G.G01.XTBGCreateMaterial; 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 PosSaveSlabRecut extends PosActivity { public String runActivity(PosContext context) { String[] RegId = (String[]) context.get("CUT_EMP_ID"); //作业人 PosGenericDao dao = getDao("mesdao"); PosParameter param = new PosParameter(); PosRowSet rowset = null; PosRow row = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); XTBGCreateMaterial xtbcm = new XTBGCreateMaterial(dao); //XTBGCOMM xtbgcomm = new XTBGCOMM(dao); String CUR_PROG_CD = ""; String SAMPLINGID = ""; String[] chargeNo = (String[]) context.get("CHARGE_NO"); //班次 if(chargeNo == null || StringUtils.isBlank(chargeNo[0])){ context.put("MESSAGES", " 炉次号为空! "); return PosBizControlConstants.SUCCESS; } chargeNo[0] = "J"+chargeNo[0].substring(1, 10); //获取当前日期 Calendar nowCal = Calendar.getInstance(); int nowMonth = nowCal.get(Calendar.MONTH) + 1; //实例化切割日期日历 Calendar cutCal = Calendar.getInstance(); String sql = "SELECT T.*,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 LIKE ?||'%'"; param = new PosParameter(); param.setWhereClauseParameter(0, chargeNo[0]); rowset = dao.findByQueryStatement(sql, param); while(rowset.hasNext()){ row = rowset.next(); 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", chargeNo[0] + "中有板坯已关帐,不允许撤销板坯实绩"); return PosBizControlConstants.SUCCESS; } CUR_PROG_CD = (String)row.getAttribute("CUR_PROG_CD"); SAMPLINGID = (String)row.getAttribute("SAMPLINGID"); if("RCB".equals(CUR_PROG_CD) || "RBB".equals(CUR_PROG_CD) || "RBA".equals(CUR_PROG_CD) || "RGF".equals(CUR_PROG_CD) || "RGC".equals(CUR_PROG_CD)){ context.put("MESSAGES", " 坯料为订单材需降余材后操作或则已经中厚板移送通知撤销移送! "); return PosBizControlConstants.SUCCESS; } if(!StringUtils.isBlank(SAMPLINGID)){ context.put("MESSAGES", " 坯料已经进行重量匹配,请到匹配界面取消匹配之后再清空流号! "); return PosBizControlConstants.SUCCESS; } } sql = "select count(1) CHARGE_CNT from tbg02_charge_comm_d t where t.SUB_CHARGE_NO = ?"; param = new PosParameter(); param.setWhereClauseParameter(0, chargeNo[0]); rowset = dao.findByQueryStatement(sql, param); if(rowset.hasNext()){ row = rowset.next(); BigDecimal chargecnt = (BigDecimal)row.getAttribute("CHARGE_CNT"); if((chargecnt.compareTo(new BigDecimal(1)) > 0)){ context.put("MESSAGES", " 已经分炉,不可删除板坯实绩! "); return PosBizControlConstants.SUCCESS; } } /*财务数据上抛*/ sql = "SELECT T.SLAB_NO FROM TBG02_SLAB_COMM T WHERE T.SLAB_NO LIKE ?||'%'"; param = new PosParameter(); param.setWhereClauseParameter(0, chargeNo[0]); rowset = dao.findByQueryStatement(sql, param); CallableStatement cstm = null; while(rowset.hasNext()){ cstm = null; row = rowset.next(); try { cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL"); cstm.setString(1, (String)row.getAttribute("SLAB_NO")); cstm.setString(2, "11A"); cstm.setString(3, "D"); cstm.setString(4, "板坯切割实绩录入撤销"); cstm.setString(5, RegId == null?"Xg3qUser":RegId[0]); cstm.registerOutParameter(6, java.sql.Types.VARCHAR); cstm.execute(); String err = cstm.getString(6); }catch(Exception ex){ ex.printStackTrace(); } } if(cstm != null){ try{ cstm.close(); }catch(Exception e) { e.printStackTrace(); } } param = new PosParameter(); param.setWhereClauseParameter(0, chargeNo[0]); dao.delete("UIG020060_SLAB_RECUT.delete", param); dao.delete("UIG020060_SLAB_RECUT_02.delete", param); param = new PosParameter(); param.setWhereClauseParameter(0, chargeNo[0]); rowset = dao.find("UIG020060_SLAB_RECUT.select", param); while(rowset.hasNext()){ row = rowset.next(); xtbcm.CreateSlab((String)row.getAttribute("SLAB_MANA_NO")); } param = new PosParameter(); param.setWhereClauseParameter(0, chargeNo[0]); dao.delete("UIG020060_SLAB_RECUT_03.delete", param); dao.delete("UIG020060_SLAB_RECUT_04.delete", param); xtbcm.CreateCharge("3"+chargeNo[0].substring(1, 10)); param = new PosParameter(); param.setWhereClauseParameter(0, chargeNo[0]); //CLEAR YARD ADDR dao.update("UIG020060_SLAB_RECUT_02.update", param); context.put("MESSAGES","操作成功!"); return PosBizControlConstants.SUCCESS; } }