package xin.glue.nui.E.E01; import java.sql.CallableStatement; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import xin.glue.user.common.GlobalConstants; import xin.glue.user.common.LogGpError; 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.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.PosMessage; /* Program Name ReArrangeOrdSts (NIE012100) * Description REARRANGE ORDER STATUS * Write By KIM SUNG HO * Date 2008-10-20 */ public class ReArrangeOrdSts extends PosActivity implements GlobalConstants { public String runActivity(PosContext context) { String V_TABLE_ID = "" ; String V_TABLE_MODE = "" ; String V_ERR_DESC = "" ; String V_RTN_NAME = "" ; String V_PROC_CD = "" ; String V_STL_GRD = "" ; String V_PROD_END_GP = "" ; String P_PROD_END_GP = "" ; String V_MILL_PROD_END_DATE = ""; String V_MILL_SHIP_END_DATE = ""; String V_PROD_END_DATE = "" ; String P_PROD_END_DATE = "" ; String V_SHIP_END_DATE = "" ; String V_ORD_PROG_CD = "" ; String V_PROD_HOLD_CD = "" ; String V_COIL_TRNF_DTIME = ""; //某一合同最后钢卷的交货日期 2013.2.19 BY MGP long V_TOT_WGT = 0 ; long V_INS_WGT = 0 ; long V_WRK_WGT = 0 ; long V_EST_WGT = 0 ; long V_END_WGT = 0 ; long V_ORD_PRC_WGT = 0 ; long V_PROD_END_WGT = 0 ; long V_ORD_REM_WGT = 0 ; long V_SHIP_END_WGT = 0 ; long V_ORD_WGT = 0 ; long V_WGT_ACVAL_MAX = 0 ; long V_HOT_ROLL_END_WGT= 0 ; long V_HOT_END_WGT = 0 ; PosMessage message = context.getMessage(); String P_ORD_NO = (String)message.get("ORD_NO"); String P_ORD_SEQ = (String)message.get("ORD_SEQ"); String P_PGMID = (String)message.get("PGMID"); String P_REG_ID = (String)message.get("REG_ID"); try { if (P_ORD_NO == null || "".equals(P_ORD_NO) || P_ORD_SEQ == null || "".equals(P_ORD_SEQ)) { //PROGRAM EXIT return PosBizControlConstants.SUCCESS; } String[]CALL = (String[])context.get("CALL"); PosGenericDao dao = this.getDao("mesdao"); if(CALL == null) { CallableStatement cstm = null; cstm = dao.getCallableStatement("PKG_OS_COMM.call"); try { cstm.setString(1, P_ORD_NO); cstm.setString(2, P_ORD_SEQ); cstm.setString(3, P_PGMID); cstm.setString(4, P_REG_ID); //cstm.registerOutParameter(3, java.sql.Types.VARCHAR); cstm.execute(); }catch(Exception ex) { try { if(cstm != null) cstm.close(); }catch(Exception e) { e.printStackTrace(); } } } /* DateFormat formatter = new SimpleDateFormat("yyyyMMdd"); String currDate = formatter.format(new Date()); //SELECT PK CHECK FROM TBE02_ORD_PRC PosParameter param0 = new PosParameter(); param0.setWhereClauseParameter(0, P_ORD_NO); param0.setWhereClauseParameter(1, P_ORD_SEQ); PosRowSet ordNoCkVO = getDao("mesdao").find("NIE012100_OrdNoCk.select",param0); if (ordNoCkVO.hasNext()) { PosRow ordNoCkRow = ordNoCkVO.next(); V_ORD_WGT = Long.parseLong((ordNoCkRow.getAttribute("ORD_WGT")==null? "0":ordNoCkRow.getAttribute("ORD_WGT")).toString()); //V_WGT_ACVAL_MIN = Long.parseLong((ordNoCkRow.getAttribute("WGT_ACVAL_MIN")==null? "0":ordNoCkRow.getAttribute("WGT_ACVAL_MIN")).toString()); V_WGT_ACVAL_MAX = Long.parseLong((ordNoCkRow.getAttribute("WGT_ACVAL_MAX")==null? "0":ordNoCkRow.getAttribute("WGT_ACVAL_MAX")).toString()); V_ORD_PROG_CD = (String)ordNoCkRow.getAttribute("ORD_PROG_CD"); V_STL_GRD = (String)ordNoCkRow.getAttribute("STL_GRD"); P_PROD_END_GP = (String)ordNoCkRow.getAttribute("PROD_END_GP"); P_PROD_END_DATE = (String)ordNoCkRow.getAttribute("PROD_END_DATE"); V_PROD_HOLD_CD = (String)ordNoCkRow.getAttribute("PROD_HOLD_CD"); //TL 091229 取出生产结束时间和发货结束时间,判断时间为空的情况系统自动给出 V_SHIP_END_DATE = (String)ordNoCkRow.getAttribute("SHIP_END_DATE"); V_PROD_END_DATE = (String)ordNoCkRow.getAttribute("PROD_END_DATE"); V_MILL_SHIP_END_DATE = (String)ordNoCkRow.getAttribute("MILL_PROD_END_DATE"); V_MILL_PROD_END_DATE = (String)ordNoCkRow.getAttribute("MILL_SHIP_END_DATE"); V_COIL_TRNF_DTIME = (String)ordNoCkRow.getAttribute("COIL_TRNF_DTIME");//发货完成钢卷的交货期 V_ORD_REM_WGT = V_ORD_WGT; if (V_WGT_ACVAL_MAX == 0) { V_WGT_ACVAL_MAX = V_ORD_WGT; } } else { //Error Display throw new PosException("ReArrangeOrdSts..Not Found NIE012100_OrdNoCk.."); } V_ORD_PRC_WGT = 0; V_PROD_END_WGT = 0; V_SHIP_END_WGT = 0; //TABLE TBE02_ORD_PRC_DET INITIALIZE PosParameter param1 = new PosParameter(); param1.setValueParamter(0 , P_ORD_NO); param1.setValueParamter(1 , P_ORD_SEQ); getDao("mesdao").update("NIE012100_INIT.update",param1); String[]CALL = (String[])context.get("CALL"); PosGenericDao dao = this.getDao("mesdao"); if(CALL == null) { CallableStatement cstm = null; cstm = dao.getCallableStatement("tbHcoilcomm02_D.call"); try { cstm.setString(1, P_ORD_NO); cstm.setString(2, P_ORD_SEQ); cstm.registerOutParameter(3, java.sql.Types.VARCHAR); cstm.execute(); }catch(Exception ex) { try { if(cstm != null) cstm.close(); }catch(Exception e) { e.printStackTrace(); } } } //SELECT CHARGE/SLAB/COIL PROGRESS WEIGHT PosParameter param2 = new PosParameter(); param2.setWhereClauseParameter(0, P_ORD_NO); param2.setWhereClauseParameter(1, P_ORD_SEQ); param2.setWhereClauseParameter(2, P_ORD_NO); param2.setWhereClauseParameter(3, P_ORD_SEQ); param2.setWhereClauseParameter(4, P_ORD_NO); param2.setWhereClauseParameter(5, P_ORD_SEQ); param2.setWhereClauseParameter(6, P_ORD_NO); param2.setWhereClauseParameter(7, P_ORD_SEQ); param2.setWhereClauseParameter(8, P_ORD_NO); param2.setWhereClauseParameter(9, P_ORD_SEQ); param2.setWhereClauseParameter(10, P_ORD_NO); param2.setWhereClauseParameter(11, P_ORD_SEQ); param2.setWhereClauseParameter(12, P_ORD_NO); param2.setWhereClauseParameter(13, P_ORD_SEQ); param2.setWhereClauseParameter(14, P_ORD_NO); param2.setWhereClauseParameter(15, P_ORD_SEQ); param2.setWhereClauseParameter(16, P_ORD_NO); param2.setWhereClauseParameter(17, P_ORD_SEQ); param2.setWhereClauseParameter(18, P_ORD_NO); param2.setWhereClauseParameter(19, P_ORD_SEQ); param2.setWhereClauseParameter(20, P_ORD_NO); param2.setWhereClauseParameter(21, P_ORD_SEQ); PosRowSet progWgtVO = getDao("mesdao").find("NIE012100_ProgWgt.select",param2); progWgtVO.reset(); while(progWgtVO.hasNext()) { PosRow progWgtRow = progWgtVO.next(); V_PROC_CD = (String)progWgtRow.getAttribute("PROG_CD"); V_INS_WGT = Long.parseLong((progWgtRow.getAttribute("INS_WGT")==null? "0":progWgtRow.getAttribute("INS_WGT")).toString()); V_WRK_WGT = Long.parseLong((progWgtRow.getAttribute("WRK_WGT")==null? "0":progWgtRow.getAttribute("WRK_WGT")).toString()); V_EST_WGT = Long.parseLong((progWgtRow.getAttribute("EST_WGT")==null? "0":progWgtRow.getAttribute("EST_WGT")).toString()); V_END_WGT = Long.parseLong((progWgtRow.getAttribute("END_WGT")==null? "0":progWgtRow.getAttribute("END_WGT")).toString()); //SELECT PK CHECK FROM TBE02_ORD_PRC_DET PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, P_ORD_NO); param3.setWhereClauseParameter(1, P_ORD_SEQ); param3.setWhereClauseParameter(2, V_PROC_CD.substring(0, 2)); PosRowSet ordPrcDetPkVO = getDao("mesdao").find("NIE012100_OrdPrcDetPk.select",param3); if (!ordPrcDetPkVO.hasNext()) { PosParameter param4 = new PosParameter(); param4.setValueParamter(0 , P_ORD_NO); param4.setValueParamter(1 , P_ORD_SEQ); param4.setValueParamter(2 , V_PROC_CD.substring(0, 2)); getDao("mesdao").insert("NIE012100_OrdPrcDet.insert",param4); } //PRODUCT PROGRESS / END WEIGHT if (V_PROC_CD.substring(0, 2).equals("SF")) { V_PROD_END_WGT = V_INS_WGT + V_WRK_WGT; V_SHIP_END_WGT = V_END_WGT; //V_ORD_PRC_WGT = V_ORD_PRC_WGT + V_INS_WGT + V_WRK_WGT; V_TOT_WGT = V_INS_WGT + V_WRK_WGT + V_END_WGT; //V_ORD_REM_WGT = V_ORD_WGT - (V_ORD_PRC_WGT + V_SHIP_END_WGT); } //-----------------增加热轧生产完成量 else if(V_PROC_CD.substring(0, 2).equals("DF")){ V_PROD_END_WGT = V_INS_WGT + V_WRK_WGT; V_SHIP_END_WGT = V_END_WGT; V_TOT_WGT = V_INS_WGT + V_WRK_WGT + V_END_WGT; } //-----------------增加热轧生产完成量 else if(V_PROC_CD.substring(0, 2).equals("SG")){ V_HOT_ROLL_END_WGT = V_END_WGT; V_HOT_END_WGT = V_INS_WGT + V_WRK_WGT + V_EST_WGT; if(P_ORD_NO.equals("31201010Z002") || P_ORD_NO.equals("31201010Z003")||P_ORD_NO.equals("31201010Z004")){ V_PROD_END_WGT = V_PROD_END_WGT + V_INS_WGT + V_WRK_WGT; V_SHIP_END_WGT = V_SHIP_END_WGT + V_END_WGT; } V_ORD_PRC_WGT = V_ORD_PRC_WGT + V_INS_WGT + V_WRK_WGT + V_EST_WGT; V_TOT_WGT = V_INS_WGT +V_EST_WGT + V_WRK_WGT + V_END_WGT; } //---------------------------------- else { V_ORD_PRC_WGT = V_ORD_PRC_WGT + V_INS_WGT + V_WRK_WGT + V_EST_WGT + V_END_WGT; V_TOT_WGT = V_INS_WGT + V_WRK_WGT + V_EST_WGT + V_END_WGT; //V_ORD_REM_WGT = V_ORD_WGT - (V_ORD_PRC_WGT + V_PROD_END_WGT + V_SHIP_END_WGT); } PosParameter param5 = new PosParameter(); param5.setValueParamter(0 , String.valueOf(V_TOT_WGT)); param5.setValueParamter(1 , String.valueOf(V_INS_WGT)); param5.setValueParamter(2 , String.valueOf(V_WRK_WGT)); param5.setValueParamter(3 , String.valueOf(V_EST_WGT)); param5.setValueParamter(4 , String.valueOf(V_END_WGT)); param5.setValueParamter(5 , P_PGMID); param5.setValueParamter(6 , P_ORD_NO); param5.setValueParamter(7 , P_ORD_SEQ); param5.setValueParamter(8 , V_PROC_CD.substring(0, 2)); int UpdCnt1 = getDao("mesdao").update("NIE012100_OrdPrcDet.update",param5); if (UpdCnt1 == 0) { V_TABLE_ID = "TBE02_ORD_PRC_DET"; V_TABLE_MODE = "U"; V_ERR_DESC = "TBE02_ORD_PRC_DET UPDATE COUNT IS ZERO"; V_RTN_NAME = "ReArrangeOrdSts TBE02_ORD_PRC_DET UPDATE1 " + P_ORD_NO + P_ORD_SEQ + V_PROC_CD.substring(0, 2); LogGpError.logMessageToDB("ReArrangeOrdSts", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME); throw new PosException(V_RTN_NAME); } }//WHILE END //V_ORD_REM_WGT 订单剩余重量 //V_ORD_WGT 订单重量 //V_ORD_PRC_WGT 订单进程重量(生产进程) //V_PROD_END_WGT 生产结束重量 //V_SHIP_END_WGT 发货完成重量 V_ORD_REM_WGT = V_ORD_WGT - (V_ORD_PRC_WGT + V_PROD_END_WGT + V_SHIP_END_WGT); //================================================王黎添加 2009年8月12日 start================================================================ //如果没有人工指定时对订单状态进行整理 if(("".equals(P_PROD_END_GP) || P_PROD_END_GP == null) && (!"Y".equals(V_PROD_HOLD_CD) && !"R".equals(V_PROD_HOLD_CD))) { //如果订单重量小于或者等于发货完成重量 if(V_WGT_ACVAL_MAX <= V_SHIP_END_WGT && V_ORD_PRC_WGT == 0) { V_ORD_PROG_CD = "G"; //发货完成 //TL 091229 发货完成的时候,自动给出发货结束时间 //if(V_SHIP_END_DATE == null || V_SHIP_END_DATE.equals("")){V_SHIP_END_DATE = currDate; } V_SHIP_END_DATE = V_COIL_TRNF_DTIME;// 2013.2.18 BY MGP } //如果订单重量大于发货重量,小于发货重量+生产完成重量 else if(V_WGT_ACVAL_MAX > V_SHIP_END_WGT && V_WGT_ACVAL_MAX <= (V_PROD_END_WGT+V_SHIP_END_WGT) && V_ORD_PRC_WGT == 0) { V_ORD_PROG_CD = "F"; //生产完成 //TL 091229 生产完成的时候,自动给出生产结束时间 if(V_PROD_END_DATE == null || V_PROD_END_DATE.equals("")){ V_PROD_END_DATE = currDate; } } //如果订单重量大于生产完成重量+发货完成重量,并且小于等于生产进行重量+生产完成重量+发货完成重量 else if(V_WGT_ACVAL_MAX > (V_PROD_END_WGT+V_SHIP_END_WGT) && V_WGT_ACVAL_MAX <= (V_ORD_PRC_WGT + V_PROD_END_WGT + V_SHIP_END_WGT)) { V_ORD_PROG_CD = "E"; //生产进行 V_PROD_END_DATE = ""; V_SHIP_END_DATE = ""; } //如果订单重量大于生产进行重量+生产完成重量+发货完成重量,并且生产进行重量+生产完成重量+发货完成重量不等于0 else if(V_WGT_ACVAL_MAX > (V_ORD_PRC_WGT + V_PROD_END_WGT + V_SHIP_END_WGT) && (V_ORD_PRC_WGT + V_PROD_END_WGT + V_SHIP_END_WGT)!=0) { V_ORD_PROG_CD = "E"; //生产进行 V_PROD_END_DATE = ""; V_SHIP_END_DATE = ""; } else if((V_ORD_PRC_WGT + V_PROD_END_WGT + V_SHIP_END_WGT) == 0)//如果订单重量=订单剩余重量 { if (V_STL_GRD == null || "".equals(V_STL_GRD)) //如果牌号为空 { if (!V_ORD_PROG_CD.equals("C")) //如果不为待设计待机 { V_ORD_PROG_CD = "A";//品质设计待机 } else { } } else if (V_ORD_PROG_CD.compareTo("D") >= 0) { V_ORD_PROG_CD = "D";//订单投入确定 } } //如果订单重量小于或者等于冷轧移送量 if(V_WGT_ACVAL_MAX <= V_HOT_ROLL_END_WGT) { //TL 091229 发货完成的时候,自动给出发货结束时间 if(V_MILL_SHIP_END_DATE == null || V_MILL_SHIP_END_DATE.equals("")){ V_MILL_SHIP_END_DATE = currDate; } } //如果订单重量大于发货重量,小于发货重量+生产完成重量 else if(V_WGT_ACVAL_MAX > V_HOT_ROLL_END_WGT && V_WGT_ACVAL_MAX <= (V_HOT_END_WGT+V_HOT_ROLL_END_WGT)) { //TL 091229 生产完成的时候,自动给出生产结束时间 if(V_MILL_PROD_END_DATE == null || V_MILL_PROD_END_DATE.equals("")){ V_MILL_PROD_END_DATE = currDate; } }else{ V_MILL_SHIP_END_DATE = ""; V_MILL_PROD_END_DATE = ""; } } else//如果人工指定了订单关闭,生产完成,发货结束则不更改订单的状态,保持原状! { V_PROD_END_GP = P_PROD_END_GP; //V_PROD_END_DATE = P_PROD_END_DATE; } //================================================王黎添加 2009年8月12日 end ================================================================ /**王黎注释 2009年8月12日 if (V_WGT_ACVAL_MIN <= (V_PROD_END_WGT + V_SHIP_END_WGT)) { if (V_ORD_PRC_WGT == 0) { V_ORD_PROG_CD = "F"; V_PROD_END_GP = "X"; V_PROD_END_DATE = currDate; } } //订单最小量小于等于发货完成量,订单进程为G(发货完成),生产结束区分为 if (V_WGT_ACVAL_MIN <= V_SHIP_END_WGT) { if ((V_ORD_PRC_WGT + V_PROD_END_WGT) == 0) { V_ORD_PROG_CD = "G"; V_SHIP_END_DATE = currDate; V_PROD_END_GP = "1"; //P_PROD_END_GP; 2009-7-26王黎修改 V_PROD_END_DATE = currDate; //P_PROD_END_DATE; 2009-7-26王黎修改 } } //------------------------2009-7-26王黎增加------------------------------- //如果人工未制定生产完成或者发货结束,由OS重新整理 if("".equals(P_PROD_END_GP) || P_PROD_END_GP == null ) { if(V_WGT_ACVAL_MIN > (V_PROD_END_WGT + V_SHIP_END_WGT)) { V_ORD_PROG_CD = "E"; V_PROD_END_GP = ""; V_PROD_END_DATE = ""; } else if(V_WGT_ACVAL_MIN < V_SHIP_END_WGT) { } else if(V_WGT_ACVAL_MIN > V_SHIP_END_WGT && V_WGT_ACVAL_MIN <= (V_PROD_END_WGT + V_SHIP_END_WGT)) { V_ORD_PROG_CD = "F"; V_PROD_END_GP = "X"; V_PROD_END_DATE = currDate; } } else { V_PROD_END_GP = P_PROD_END_GP; V_PROD_END_DATE = P_PROD_END_DATE; } //------------------------------------------------------------------------- if (V_ORD_PRC_WGT != 0) { V_ORD_PROG_CD = "E"; } else if (V_ORD_REM_WGT == V_ORD_WGT) { if (V_STL_GRD == null || "".equals(V_STL_GRD)) { if (!V_ORD_PROG_CD.equals("C")) { V_ORD_PROG_CD = "A"; } } else if (V_ORD_PROG_CD.compareTo("D") >= 0) { V_ORD_PROG_CD = "D"; } else if (V_ORD_PROG_CD.compareTo("D") < 0) { V_PROD_END_GP = P_PROD_END_GP; V_PROD_END_DATE = P_PROD_END_DATE; } } PosParameter param6 = new PosParameter(); param6.setValueParamter(0 , V_ORD_PROG_CD); param6.setValueParamter(1 , V_PROD_END_GP); //这里在系统自动判断时给出发货结束时间和生产结束时间 TL 091229 param6.setValueParamter(2 , V_PROD_END_DATE); param6.setValueParamter(3 , String.valueOf(V_ORD_PRC_WGT)); param6.setValueParamter(4 , String.valueOf(V_ORD_REM_WGT)); param6.setValueParamter(5 , String.valueOf(V_PROD_END_WGT)); param6.setValueParamter(6 , String.valueOf(V_SHIP_END_WGT)); param6.setValueParamter(7, String.valueOf(V_HOT_ROLL_END_WGT)); //这里在系统自动判断时给出发货结束时间和生产结束时间 TL 091229 param6.setValueParamter(8 , V_SHIP_END_DATE); param6.setValueParamter(9 , P_REG_ID); param6.setValueParamter(10 , P_PGMID); //---------------MODIFY BY WXY 20101219 ----增加对于冷轧订单的热轧生产完成,移送完成时间---------- param6.setValueParamter(11, V_MILL_PROD_END_DATE); param6.setValueParamter(12, V_MILL_SHIP_END_DATE); //---------------------------------------------------------------------------------------- param6.setValueParamter(13, P_ORD_NO); param6.setValueParamter(14, P_ORD_SEQ); //UPDATE FROM TBE02_ORD_PRC int UpdCnt2 = getDao("mesdao").update("NIE012100_OrdPrc.update",param6); if (UpdCnt2 == 0) { V_TABLE_ID = "TBE02_ORD_PRC"; V_TABLE_MODE = "U"; V_ERR_DESC = "TBE02_ORD_PRC UPDATE COUNT IS ZERO"; V_RTN_NAME = "ReArrangeOrdSts TBE02_ORD_PRC UPDATE2 " + P_ORD_NO + P_ORD_SEQ; LogGpError.logMessageToDB("ReArrangeOrdSts", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME); throw new PosException(V_RTN_NAME); } //DELETE TBE02_ORD_PRC_DET TOT_WGT = 0 getDao("mesdao").delete("NIE012080_ORDPRCDET.delete"); */ } catch (PosException ex) { context.put(SERVICE_ERR_MSG, ex.getMessage()); throw ex; } catch (Throwable t) { context.put(SERVICE_ERR_MSG, t.getMessage()); throw new PosException(t.getMessage(), t); } return PosBizControlConstants.SUCCESS; } }