| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476 |
- package xin.glue.nui.H.H02;
- 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 xin.glue.ui.common.ProduceFactory;
- import com.posdata.glue.PosException;
- 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;
- import com.posdata.glue.msg.PosMessage;
- /*
- * author:王小炎
- * date:2008-10-17
- * desc:接收LEVEL2中所发生的热轧实绩,将相应的轧制编制信息 TBF02_SPEC_MILL,轧制编制详细信息 TBF02_SPEC_MILL_D
- * 录入到TBH02_COIL_COMM,TBH02_COIL_COMM_D中
- */
- public class PosSaveMillToCoilComm extends PosActivity
- {
- public String runActivity(PosContext context)
- {
- // 获取从二级接收过来的数据
- PosMessage message = context.getMessage();
- String MSG_DATE = (String)message.get("MSG_DATE");
- String slabNo = (String)message.get("SLAB_NO");
- String coilNo_L2 = (String)message.get("COIL_NO");
- BigDecimal coil_wgt_l2 = (BigDecimal)message.get("COIL_WGT"); //62 钢卷重量
- //64 钢卷内径
- String coil_outdia = (String)message.get("COIL_OUTDIA"); //65 钢卷外径
- String coil_len = (String)message.get("COIL_LEN"); //66 钢卷长度
- String dc_no = (String)message.get("DC_NO"); //59 卷取机号
- String dc_on_dtime = (String)message.get("DC_ON_DTIME"); //60 开始卷取时刻
- String dc_off_dtime = (String)message.get("DC_OFF_DTIME"); //61 结束卷取时刻
- //这里钢卷的宽度、厚度应该取轧制的平均宽度、厚度。原先取的是额定的轧制宽度厚度
- //这里轧制时间应该取卷取结束时间,这里原先取的是电文时间 090829 TL 修改提示
- String fm_ext_strip_thk = (String)message.get("FM_EXT_STRIP_THK_AVG"); //22 额定轧制厚度
- String fm_ext_strip_wth = (String)message.get("FM_EXT_STRIP_WTH_AVG"); //27 额定轧制宽度
-
- //计算板坯的理论重量,在二级给不出重量的时候使用
- BigDecimal coil_wgt = null;
-
- String nextTrans = PosBizControlConstants.SUCCESS;
-
- //计划钢卷号
- String coilNo = null;
- String currDate = null;
- //卷曲结束时间为空的时候取默认时间
- if(dc_off_dtime.length() == 0 ){
-
- DateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
- currDate = formatter.format(new Date());
-
- dc_off_dtime = currDate;
-
- }
-
- //这里从二级接收过来的卷号为实际卷号,为了能够解析数据到实际表。把实际钢卷号转换为计划钢卷号。
- //在执行相应的程序,把数据写入表中
- PosParameter paramAA = new PosParameter();
- paramAA.setWhereClauseParameter(0, coilNo_L2);
-
- //这里是实际钢卷号
- logger.logDebug("PosSaveMillToCoilComm OLD_SAMPL_NO !!! "+coilNo_L2);
-
- PosRowSet CoilNoVo = getDao("mesdao").find("NIH020050_06.select", paramAA);
-
- //查询出计划卷号的情况下,处理相应的业务类数据
- if(CoilNoVo.hasNext()){
- PosRow CoilNoRow = CoilNoVo.next();
- coilNo = (String) CoilNoRow.getAttribute("COIL_NO");
- //这里是计划钢卷号
- logger.logDebug("PosSaveMillToCoilComm COIL_NO !!! "+coilNo);
-
- // SLAB REJECT CHECK
- String slabsql0 = "SELECT SLAB_NO from TBH02_RHF_MISSNO WHERE SLAB_NO = ? AND COIL_NO = ?";
-
- PosParameter param10 = new PosParameter();
- param10.setWhereClauseParameter(0,slabNo);
- param10.setWhereClauseParameter(1,coilNo);
- PosRowSet slabrejVo = getDao("mesdao").findByQueryStatement(slabsql0, param10);
- if(slabrejVo.hasNext()) {
-
- logger.logDebug("PosSaveMillToCoilComm SLAB REJECT !!! ");
- nextTrans = "failure";
- return nextTrans;
- }
-
- // COIL REJECT CHECK
- String coilsql0 = "SELECT MISSNO_CLF_CD from TBH02_COIL_COMM WHERE MISSNO_CLF_CD IS NOT NULL AND SLAB_NO = ? AND COIL_NO = ?";
-
- PosParameter paramA = new PosParameter();
- paramA.setWhereClauseParameter(0,slabNo);
- paramA.setWhereClauseParameter(1,coilNo);
- PosRowSet coilrejVo = getDao("mesdao").findByQueryStatement(coilsql0, paramA);
- if(coilrejVo.hasNext()) {
-
- logger.logDebug("PosSaveMillToCoilComm COIL REJECT !!! ");
- nextTrans = "failure";
- return nextTrans;
- }
-
- /*
- * 从TBF02_SPEC_MILL中取得被 SELECT的轧钢参数table
- * 轧钢参数data编辑 ( COIL公用 <-轧钢参数data)
- * 牌号 .,标准号, 交货期, 合同号, 订单号, 订单用途代码, 产品代码 订单去向
- * 需要插入到TBH02_COIL_COMM表中
- * 板坯编制号用于查询TBF02_SPEC_MILL_D表时 作为查询条件
- */
- String stlGrd = ""; //牌号
- String specstlGrd = ""; //真实牌号
- String specAbbsym = ""; //标准号
- String delvReqData = ""; //交货期
- String ordNo = ""; //合同号
- String ordSeq = ""; //订单号
- String route = ""; //订单去向
- BigDecimal slabEdtSeq = null; //板坯编制号,TBF02_SPEC_MILL表主键
- String OrdCustCd = "";
- String DestCd = "";
- BigDecimal spec_coil_india = null;
- BigDecimal spec_coil_outdia = null;
- /*
- * 从TBG02_SLAB_COMM中取得 产品代码 需要插入到TBH02_COIL_COMM表中
- */
- String prodnmCd = ""; //产品代码
-
- /*
- * 从TBF02_SPEC_MILL_D中取得被 SELECT的轧钢参数详细table
- * 轧钢参数详细data编辑 (COIL详细 <- 轧钢参数详细data)
- */
- String coilCutSeq = ""; //切割顺序
- BigDecimal ordThk = null; //订单厚度
- BigDecimal ordWth = null; //订单宽度
- BigDecimal ordLen = null; //订单长度
- BigDecimal ordWgt = null; //订单重量
- BigDecimal ordWgtMin = null; //订单单重下限
- BigDecimal ordWgtMax = null; //订单单重上限
- BigDecimal ordIndia = null; //订单内径
- BigDecimal ordOutdia = null; //订单外径
- // String ordNo = ""; //合同号
- // String ordSeq = ""; //订单号
- String ordFl = ""; //订单余才区分
- String statusCd = ""; //状态区分
- String SpmProcYn = null;
- String OrdUseCd = null; //订单用途代码
- String PathMillCd = null;
- String PackMethod = null;
-
-
-
-
- PosParameter param0 = new PosParameter();
- PosParameter param1 = new PosParameter();
- PosParameter param2 = new PosParameter();
- PosParameter param3 = new PosParameter();
- PosParameter param4 = new PosParameter();
- PosParameter param5 = new PosParameter();
-
- // 从TBH02_SPEC_MILL中取得数据 需要插入到TBH02_COIL_COMM表中
- param0.setWhereClauseParameter(0, slabNo);
- param0.setWhereClauseParameter(1, coilNo);
- PosRowSet rowset0 = this.getDao("mesdao").find("NIH020050_02.select", param0);
- if(rowset0.hasNext())
- {
- PosRow row0 = rowset0.next();
-
- stlGrd = (String)row0.getAttribute("STL_GRD"); //牌号
- specstlGrd = (String)row0.getAttribute("SPEC_STL_GRD"); //真实牌号
- specAbbsym = (String)row0.getAttribute("SPEC_ABBSYM"); //标准号
- delvReqData = (String)row0.getAttribute("DELV_REQ_DATE"); //交货期
- ordNo = (String)row0.getAttribute("ORD_NO"); //合同号
- ordSeq = (String)row0.getAttribute("ORD_SEQ"); //订单号
- OrdUseCd = (String)row0.getAttribute("ORD_USEAGE_CD"); //订单用途代码
- route = (String)row0.getAttribute("ROUTE"); //订单去向
- slabEdtSeq = (BigDecimal)row0.getAttribute("SLAB_EDT_SEQ"); //板坯编制号
- OrdCustCd = (String)row0.getAttribute("ORD_CUST_CD"); //客户代码
- DestCd = (String)row0.getAttribute("DEST_CD"); //目的地代码
- SpmProcYn = (String)row0.getAttribute("SPM_PROC_YN"); //平整分卷指定判断
- PathMillCd = (String)row0.getAttribute("PATH_MILL_CD"); //轧制工艺流程
- PackMethod = (String)row0.getAttribute("PACK_METHOD"); //包装方法
- spec_coil_india = (BigDecimal)row0.getAttribute("ORD_INDIA");
- spec_coil_outdia = (BigDecimal)row0.getAttribute("ORD_OUTDIA");
- ordThk = (BigDecimal)row0.getAttribute("ORD_THK");
- ordWth = (BigDecimal)row0.getAttribute("ORD_WTH");
- ordWgt = (BigDecimal)row0.getAttribute("ORD_WGT");
- }else{
- logger.logDebug("XinSaveMillResult TBF02_spec_mill unmatch coil_no and slab_no !!! ");
- nextTrans = "failure";
- return nextTrans;
- }
-
-
- String SpmYn = null;
- if (SpmProcYn != null && SpmProcYn.equals("Y")) {
- SpmYn = "1";
- } else {
- SpmYn = "";
- }
-
-
- // 从TBG02_SLAB_COMM中取得 产品代码 需要插入到TBH02_COIL_COMM表中
- param1.setWhereClauseParameter(0, slabNo);
- PosRowSet rowset1 = this.getDao("mesdao").find("NIH020050_03.select",param1);
- if(rowset1.hasNext())
- {
- PosRow row1 = rowset1.next();
- prodnmCd = (String)row1.getAttribute("PRODNM_CD"); //产品代码
- }
-
- //查询板坯重量
- String sql0 = "SELECT SLAB_WGT from TBG02_SLAB_COMM WHERE SLAB_NO = ?";
-
- PosParameter param44 = new PosParameter();
- param44.setWhereClauseParameter(0,slabNo);
- PosRowSet slabVo = getDao("mesdao").findByQueryStatement(sql0, param44);
-
- Number SlabWgt = null;
-
- if(slabVo.hasNext()){
- PosRow slabROW = slabVo.next();
- SlabWgt = (Number)slabROW.getAttribute("SLAB_WGT");
- }
-
- //查询成材率数据
- String sql11 = "SELECT A.PROC_RATE FROM TBE01_PROC_RATE A WHERE A.PROC_CD = 'R' ";
-
- PosParameter param55 = new PosParameter();
- //param55.setWhereClauseParameter(0,slabNo);
- PosRowSet coilVo = getDao("mesdao").findByQueryStatement(sql11, param55);
-
- Number PROC_RATE = null;
-
- if(coilVo.hasNext()){
- PosRow coilRow = coilVo.next();
- PROC_RATE = (Number)coilRow.getAttribute("PROC_RATE");
- }
-
- //计算钢卷理论重量,这里转换为整数型。只要为0就计算
- if(coil_wgt_l2.intValue() == 0){
- //计算钢卷理论重量
- if(SlabWgt != null ){
- if(PROC_RATE != null){
- String sqlWgt = "SELECT TO_NUMBER(ROUND((?*?)/100,1)) SQL_WGT from dual ";
- PosParameter paramu = new PosParameter();
- paramu.setWhereClauseParameter(0,SlabWgt);
- paramu.setWhereClauseParameter(1,PROC_RATE);
-
- PosRowSet calVo = getDao("mesdao").findByQueryStatement(sqlWgt, paramu);
-
- if(calVo.hasNext()){
- PosRow calROW = calVo.next();
-
- coil_wgt = (BigDecimal)calROW.getAttribute("SQL_WGT");
- logger.logDebug("PosSaveMillToCoilComm 如果钢卷理论重量的计算公式:slab_wgt*PROC_RATE/100 单位为kg");
- logger.logDebug("PosSaveMillToCoilComm 如果钢卷重量为空的情况下,理论重量为 :"+coil_wgt);
- }
-
- }
- }
- }else{
- coil_wgt = coil_wgt_l2;
- }
- // 这里需要做出判断,进程代码为SFA\SFB\SFF的时候。不能再次接受电文,修改钢卷公共表的状态
- param3.setWhereClauseParameter(0, coilNo);
- PosRowSet rowset3 = this.getDao("mesdao").find("NIH020050_05.select", param3);
- if(!rowset3.hasNext())
- {
- PosRow row3 = rowset3.next();
- String CUR_PROG_CD = (String) row3.getAttribute("CUR_PROG_CD");
- if(CUR_PROG_CD == null || CUR_PROG_CD.equals("") || CUR_PROG_CD.equals("SED")){
- param4.setValueParamter(0, coilNo);
- param4.setValueParamter(1, stlGrd);
- param4.setValueParamter(2, specAbbsym);
- param4.setValueParamter(3, delvReqData);
- param4.setValueParamter(4, ordNo);
- param4.setValueParamter(5, ordSeq);
- param4.setValueParamter(6, OrdUseCd);
- param4.setValueParamter(7, route);
- param4.setValueParamter(8, prodnmCd);
- param4.setValueParamter(9, OrdCustCd);
- param4.setValueParamter(10, DestCd);
- param4.setValueParamter(11, SpmYn);
- param4.setValueParamter(12, PathMillCd);
- param4.setValueParamter(13, PackMethod);
- param4.setValueParamter(14, slabNo);
- param4.setValueParamter(15, fm_ext_strip_thk);
- param4.setValueParamter(16, fm_ext_strip_wth);
- param4.setValueParamter(17, coil_len);
- param4.setValueParamter(18, spec_coil_india);
- param4.setValueParamter(19, coil_outdia);
- param4.setValueParamter(20, coil_wgt);
- param4.setValueParamter(21, dc_on_dtime);
- param4.setValueParamter(22, dc_off_dtime);
- param4.setValueParamter(23, ordThk);
- param4.setValueParamter(24, ordWth);
- param4.setValueParamter(25, spec_coil_india);
- param4.setValueParamter(26, spec_coil_outdia);
- param4.setValueParamter(27, ordWgt);
- //这里轧制时间由电文时间改为卷取时间
- param4.setValueParamter(28, dc_off_dtime);
- param4.setValueParamter(29, specstlGrd);
-
- int rowset4 = this.getDao("mesdao").insert("NIH020050_02.insert", param4);
-
- //从TBF02_SPEC_MILL_D中取得数据 需要插入到TBH02_COIL_COMM_d表中
- param2.setWhereClauseParameter(0, slabEdtSeq);
- PosRowSet rowset2 = this.getDao("mesdao").find("NIH020050_04.select",param2);
- while(rowset2.hasNext())
- {
- PosRow row2 = rowset2.next();
- coilCutSeq = (String)row2.getAttribute("COIL_CUT_SEQ"); //切割顺序
- ordThk = (BigDecimal)row2.getAttribute("ORD_THK"); //订单厚度
- ordWth = (BigDecimal)row2.getAttribute("ORD_WTH"); //订单宽度
- ordLen = (BigDecimal)row2.getAttribute("ORD_LEN"); //订单长度
- ordWgt = (BigDecimal)row2.getAttribute("ORD_WGT"); //订单重量
- ordWgtMin = (BigDecimal)row2.getAttribute("ORD_WGT_MIN"); //订单单重下限
- ordWgtMax = (BigDecimal)row2.getAttribute("ORD_WGT_MAX"); //订单单重上限
- ordIndia = (BigDecimal)row2.getAttribute("ORD_INDIA"); //订单内径
- ordOutdia = (BigDecimal)row2.getAttribute("ORD_OUTDIA"); //订单外径 //订单号
- ordFl = (String)row2.getAttribute("ORD_FL"); //订单材余材区分
- statusCd = (String)row2.getAttribute("STATUS_CD"); //状态区分,没有用到
-
-
- param5.setValueParamter(0, coilNo);
- param5.setValueParamter(1, coilCutSeq);
- param5.setValueParamter(2, ordThk);
- param5.setValueParamter(3, ordWth);
- param5.setValueParamter(4, ordLen);
- param5.setValueParamter(5, ordWgt);
- param5.setValueParamter(6, ordWgtMin);
- param5.setValueParamter(7, ordWgtMax);
- param5.setValueParamter(8, ordIndia);
- param5.setValueParamter(9, ordOutdia);
- param5.setValueParamter(10, ordNo);
- param5.setValueParamter(11, ordSeq);
- param5.setValueParamter(12, ordFl);
-
- int rowset5 = this.getDao("mesdao").insert("NIH020050_03.insert",param5);
- }
- }
- } else {
- PosRow row3 = rowset3.next();
- String CUR_PROG_CD = (String) row3.getAttribute("CUR_PROG_CD");
- String ACT_WGT = "0" + row3.getAttribute("ACT_WGT");
- if(CUR_PROG_CD == null || CUR_PROG_CD.equals("") || CUR_PROG_CD.equals("SED")){
- param4.setValueParamter(0, stlGrd);
- param4.setValueParamter(1, specAbbsym);
- param4.setValueParamter(2, delvReqData);
- param4.setValueParamter(3, ordNo);
- param4.setValueParamter(4, ordSeq);
- param4.setValueParamter(5, OrdUseCd);
- param4.setValueParamter(6, route);
- param4.setValueParamter(7, prodnmCd);
- param4.setValueParamter(8, OrdCustCd);
- param4.setValueParamter(9, DestCd);
- param4.setValueParamter(10, SpmYn);
- param4.setValueParamter(11, PathMillCd);
- param4.setValueParamter(12, PackMethod);
- param4.setValueParamter(13, slabNo);
- param4.setValueParamter(14, fm_ext_strip_thk);
- param4.setValueParamter(15, fm_ext_strip_wth);
- param4.setValueParamter(16, coil_len);
- param4.setValueParamter(17, spec_coil_india);
- param4.setValueParamter(18, coil_outdia);
- try{
- if (ACT_WGT != null && !ACT_WGT.equals("") && Integer.parseInt(ACT_WGT) != 0) {
- coil_wgt = new BigDecimal(ACT_WGT);
- }
- }
- catch (Exception e) {
- // TODO: handle exception
- }
- param4.setValueParamter(19, coil_wgt);
- param4.setValueParamter(20, dc_on_dtime);
- param4.setValueParamter(21, dc_off_dtime);
- //这里轧制时间由电文时间改为卷取结束时间
- param4.setValueParamter(22, dc_off_dtime);
- param4.setValueParamter(23, specstlGrd);
- param4.setValueParamter(24, coilNo);
-
- int rowset4 = this.getDao("mesdao").update("NIH020050_02.update", param4);
- }
- }
-
- //如果出现多次吊销的情况,只在第一次的时候给予处理
- PosParameter paramx = new PosParameter();
- String sqlx = "select RHF_STAT from TBH02_REHEATFUR where slab_no = ? and coil_no = ? ";
- paramx.setWhereClauseParameter(0, slabNo);
- paramx.setWhereClauseParameter(1, coilNo);
-
- //判断是否有上料,如果没有上料,自动补录
- String RHF_STAT = null;
- PosRowSet rowset2 = getDao("mesdao").findByQueryStatement(sqlx, paramx);
- if(rowset2.hasNext()){
- PosRow row2 = rowset2.next();
- RHF_STAT = (String) row2.getAttribute("RHF_STAT");
- //加入日志
- PosParameter paramhis = new PosParameter();
- paramhis.setValueParamter(0, slabNo);
- paramhis.setValueParamter(1, coilNo);
- paramhis.setValueParamter(2, RHF_STAT);
- getDao("mesdao").insert("UIH020036_09.insert", paramhis);
-
- if("1".equals(RHF_STAT))
- {
- //此方法用来传送异动点数据
- ProduceFactory PD= new ProduceFactory();
- PD.ErpDataCover("HSLAB",slabNo,"41A","0","O","加热炉二级丢料","热轧轧制");
- }
- }
- else{
- //此方法用来传送异动点数据
- ProduceFactory PD= new ProduceFactory();
- PD.ErpDataCover("HSLAB",slabNo,"41A","0","O","加热炉二级丢料","热轧轧制");
- }
-
- //TL 加入调用品质的存储过程 COPY XinSaveRhfExtract NIB028070
- //20180703 在此存储过程中加入更改进程的业务,判断订单是否需要平整,需要的话更改SED—-->SCA By wl
- CallableStatement PlRtn = getDao("mesdao").getCallableStatement("NIH020050_NIB028040");
-
- try {
- if(PlRtn != null) {
- PlRtn.setString(1,coilNo);
- PlRtn.registerOutParameter(2, java.sql.Types.VARCHAR);
- PlRtn.registerOutParameter(3, java.sql.Types.VARCHAR);
-
- PlRtn.execute();
-
- String sRetCode = PlRtn.getString(2);
- String sRetMsg = PlRtn.getString(3);
-
- logger.logDebug("PosSAveOutHeatFurnace---> NIB028040 TC PlRtn1:["+sRetCode+"]:"+ sRetMsg);
-
-
- }
- } catch (SQLException e) {
- throw new PosException(e.getMessage());
- }finally
- {
- if (PlRtn != null)
- {
- try
- {
- PlRtn.close();
- }
- catch (SQLException e)
- {
- logger.logWarn(e.getMessage(), e);
- }
- }
- }
-
-
-
- //调用存货异动点存储过程
- /*ProduceFactory PD= new ProduceFactory();
- PD.ErpDataCover("HCOIL",coilNo_L2,"11A","0","O","轧制二级","热卷实绩产出");*/
- nextTrans = "success";
- }else{
- //通过实际钢卷号没有获得计划钢卷号的信息
- logger.logDebug("XinSaveMillResult OLD_SAMPL_NO - > COIL_NO ERROR ");
- }
- return nextTrans;
-
- }
- }
|