package UIE.UIE03; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.sql.SQLException; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.apache.commons.lang.StringUtils; import UIB.COM.XmlSqlParsersFactory; import CoreFS.SA01.CoreIComponent; import CoreFS.SA06.CoreReturnObject; public class UIE043010 extends CoreIComponent { public CoreReturnObject repSave()throws Exception { //String sqlstr = XmlSqlParsersFactory.getSql("UIE043010_01.update"); String sqlstr = "UPDATE test_tbb02_work SET ABC = '11' WHERE COIL_NO = '1'"; CoreReturnObject cro = this.getDao("KgDao").ExcuteNonQuery(sqlstr); sqlstr = "UPDATE test_tbb02_work SET ABC = '22' WHERE COIL_NO = '2'"; cro = this.getDao("KgDao").ExcuteNonQuery(sqlstr); sqlstr = "UPDATE test_tbb02_work SET ABC = '33' WHERE COIL_NO1 = '3'"; cro = this.getDao("KgDao").ExcuteNonQuery(sqlstr); return null; } public CoreReturnObject query01(String areaType) throws SQLException { CoreReturnObject cro=new CoreReturnObject(); StringBuffer str = new StringBuffer(); str.append("SELECT \n"); str.append("a.ROLL_MANA_NO --轧制单元号 \n"); str.append(",a.ROLL_COIL_SEQ --单元内序号 \n"); str.append(",a.COIL_EDT_SEQ --轧制序号 \n"); str.append(",a.C_COIL_NO --冷卷号 \n"); str.append(",a.COIL_NO --热卷号 \n"); str.append(",a.SPEC_STL_GRD --酸轧牌号 \n"); str.append(",a.STL_GRD --热轧牌号 \n"); str.append(",a.STL_GRP_CD --钢号组 \n"); str.append(",a.COIL_THK --热卷厚度 \n"); str.append(",a.COIL_WTH --热卷宽度 \n"); str.append(",a.COIL_WGT --热卷重量 \n"); str.append(",b.cur_load_loc --堆放位置 \n"); str.append(",a.ORD_NO --合同号 \n"); str.append(",a.ORD_SEQ --订单号 \n"); str.append(",a.ORD_THK --订单厚度 \n"); str.append(",a.ORD_WTH --订单宽度 \n"); str.append(",a.ORD_WGT --订单重量 \n"); str.append(",a.ORD_WGT_MIN --订单下限 \n"); str.append(",a.ORD_WGT_MAX --订单上限 \n"); str.append(",a.ORD_INDIA --订单内径 \n"); str.append(",a.ORD_OUTDIA --订单外径 \n"); str.append("FROM c_tbf03_spec_mill a, \n"); str.append("c_tbk02_coil_comm b \n"); str.append("WHERE a.COIL_NO = b.COIL_NO \n"); str.append("and a.ROLL_MANA_NO = :1 \n"); str.append("and a.REG_DTIME between :2||'000000' and :3||'999999' \n"); str.append("and b.MILL_DTIME between :4||'000000' and :5||'999999' \n"); str.append("and b.ORD_NO = :6 \n"); str.append("and b.ORD_SEQ = :7 \n"); str.append("ORDER BY a.ROLL_MANA_NO,a.ROLL_COIL_SEQ \n"); String sql = str.toString(); cro=this.getDao("KgDao").ExcuteQuery(sql); System.out.println(cro); return cro; } /** * 连退成品充当时判断订单材质项目与钢卷材质是否匹配 * @author KM */ public CoreReturnObject compareOrdCoilQlty(String coilNo,String ordNO,String ordSeq) { CoreReturnObject cro = new CoreReturnObject(); //获取订单要求材质项目sql String Sql1 = XmlSqlParsersFactory.getSql("UIE043010_ord_01.select"); //获取钢卷对应的材质项目sql String Sql2 = XmlSqlParsersFactory.getSql("UIE043010_ord_02.select"); //查询钢卷是否 在改判中 String Sql3 = XmlSqlParsersFactory.getSql("UIE043010_ord_03.select"); Object[] ordParams = new Object[]{ordNO,ordSeq,ordNO,ordSeq}; StringBuffer QLTY_ORD_DESC = new StringBuffer(""); StringBuffer QLTY_COIL_DESC = new StringBuffer(""); int ordEqual = 0; //表示材质与订单匹配一致; try { //查询钢卷是否 在改判中,处于改判中的钢卷不能充当 ArrayList coilGP_List = (ArrayList) this.getDao("KgDao").ExcuteQueryReturnList(Sql3,new String[] {coilNo}); if(coilGP_List == null || 0 == coilGP_List.size()) { cro.setV_errMsg("GP"); // CoreClientParam.ReturnInfo //cro.setResult("setResult:" + state); //CoreClientParam.ReturnObject return cro; } //获取订单要求的材质项目 ArrayList ordList = (ArrayList) this.getDao("KgDao").ExcuteQueryReturnList(Sql1,ordParams); System.out.println("ordQlty_sql------- " + Sql1); //获取钢卷对应的材质项目 ArrayList coilQlty_List = (ArrayList) this.getDao("KgDao").ExcuteQueryReturnList(Sql2,new String[] {coilNo}); System.out.println("coilQlty_sql------- " + Sql2); if(0 == ordList.size() || 0 == coilQlty_List.size()) { cro.setV_errMsg(QLTY_ORD_DESC.toString()); // CoreClientParam.ReturnInfo //cro.setResult("setResult:" + state); //CoreClientParam.ReturnObject return cro; } Double val_8050 = Double.valueOf(0); //存放伸长率转换后的值 DecimalFormat df = new DecimalFormat("#0.000"); for (int j = 0; j < ordList.size(); j++) { Map map = (Map) ordList.get(j); String QLTY_CD1 = map.get("QLTY_CD").toString(); Object QLTY_CD_CFNM1 = map.get("QLTY_CD_CFNM"); Object QLTY_MIN1 = map.get("QLTY_MIN"); Object QLTY_MAX1 = map.get("QLTY_MAX"); Object QLTY_DEC_CD1 = map.get("QLTY_DEC_CD"); if(QLTY_MIN1 == null) QLTY_MIN1 = ""; if(QLTY_MAX1 == null) QLTY_MAX1 = ""; if(QLTY_DEC_CD1 == null) QLTY_DEC_CD1 = ""; String dxDesc = (QLTY_MIN1 == "" ? "" : (QLTY_MIN1 + "(最小)")) + (QLTY_MAX1 == "" ? "" : (QLTY_MAX1 + "(最大)")); if(!StringUtils.isEmpty(QLTY_DEC_CD1.toString()) && !"B".equals(QLTY_DEC_CD1.toString())) { QLTY_ORD_DESC.append(QLTY_CD1+" " + QLTY_CD_CFNM1.toString() + " " + dxDesc + "\n"); } else { //对伸长率、屈服强度、抗拉强度进行匹配 int qltyEqual = 0; //表示单个材质没找到匹配的; String qlty_VAL = ""; String qlty_coil_cd = ""; //伸长率EL05 String isEL = "" ; //表示钢卷材质项目中是否有伸长率 for (int t = 0; t < coilQlty_List.size(); t++) { Map tMap = (Map) coilQlty_List.get(t); String PROD_CD = tMap.get("QLTY_CD").toString(); Object PROD_CD_CFNM = tMap.get("QLTY_CD_CFNM"); //名称 Object PROD_VAL = tMap.get("QLTY_VAL_WK"); //实绩值 if(PROD_VAL == null) PROD_VAL = ""; if(QLTY_CD1.equals(PROD_CD)) { int isHege = 1; // if(!"".equals(QLTY_MIN1)) { if("".equals(PROD_VAL)) isHege =0; else if(Double.valueOf(PROD_VAL.toString()) < Double.valueOf(QLTY_MIN1.toString())) isHege =0; } if(!"".equals(QLTY_MAX1)) { if(!"".equals(PROD_VAL)) { if(Double.valueOf(PROD_VAL.toString()) > Double.valueOf(QLTY_MAX1.toString())) isHege =0; } } if(isHege == 0) { qltyEqual = 2; //表示匹配了但不合格 } else qltyEqual = 1; //表示匹配了 break; //找到了匹配的材质项目就结束当前for循环 } else if("EL".equals(strIsStarwith(PROD_CD))) { //伸长率 isEL = "TRUE"; //有伸长率 qlty_VAL = PROD_VAL.toString(); if("EL05".equals(PROD_CD)) { qlty_coil_cd = "EL05"; } } } if("EL".equals(strIsStarwith(QLTY_CD1)) && qltyEqual == 0) { //伸长率 int isHege = 1; if("TRUE".equals(isEL) && !StringUtils.isEmpty(qlty_VAL)) { if("EL05".equals(qlty_coil_cd)) { //充当钢卷伸长率为A80 val_8050 = Double.valueOf(df.format(Double.valueOf(qlty_VAL)*1.207)); //A80转换成A50 } else if("EL05".equals(QLTY_CD1)) { //订单伸长率为A80 val_8050 = Double.valueOf(df.format(Double.valueOf(qlty_VAL)*0.829)); //A50转换成A80 } else { isHege = 2; val_8050 = null; } } if(!"".equals(QLTY_MIN1) && val_8050 != null) { if(val_8050 < Double.valueOf(QLTY_MIN1.toString())) isHege =0; } if(!"".equals(QLTY_MAX1) && val_8050 != null) { if(val_8050 > Double.valueOf(QLTY_MAX1.toString())) isHege =0; } if(isHege == 0) qltyEqual = 3; //表示伸长率转换后不合格 else if(isHege == 2) qltyEqual = 5; //表示伸长率中没有A80项目 else qltyEqual = 4; //表示不匹配但转换后合格 } if(qltyEqual == 1) { QLTY_ORD_DESC.append(QLTY_CD1+" " + QLTY_CD_CFNM1.toString() + " " + dxDesc + "\n"); } else if(qltyEqual == 0 || qltyEqual == 5) { QLTY_ORD_DESC.append(QLTY_CD1+"【不匹配】" + QLTY_CD_CFNM1.toString() + " " + dxDesc + "\n"); ordEqual = 1; //标识不匹配 } else if(qltyEqual == 2) { QLTY_ORD_DESC.append(QLTY_CD1+"【不合格】" + QLTY_CD_CFNM1.toString() + " " + dxDesc + "\n"); } else if(qltyEqual == 3) { QLTY_ORD_DESC.append(QLTY_CD1+"【转换后" + val_8050 + "不合格】" + QLTY_CD_CFNM1.toString() + " " + dxDesc + "\n"); ordEqual = 1; //标识不匹配 } else if(qltyEqual == 4) { QLTY_ORD_DESC.append(QLTY_CD1+"【转换后" + val_8050 + "合格】" + QLTY_CD_CFNM1.toString() + " " + dxDesc + "\n"); ordEqual = 1; //标识不匹配 } } } for (int n = 0; n < coilQlty_List.size(); n++) { Map tMap = (Map) coilQlty_List.get(n); String PROD_CD = tMap.get("QLTY_CD").toString(); Object PROD_CD_CFNM = tMap.get("QLTY_CD_CFNM"); //名称 Object PROD_VAL = tMap.get("QLTY_VAL_WK"); //实绩值 if(PROD_VAL == null) PROD_VAL = ""; QLTY_COIL_DESC.append(PROD_CD+" " + PROD_CD_CFNM.toString() + " " + (PROD_VAL == ""? "" : (PROD_VAL + "(实际值)" )) + "\n"); } } catch (Exception e) { e.printStackTrace(); } String msg = QLTY_COIL_DESC.toString(); if(!StringUtils.isEmpty(msg)) msg = "◆钢卷" + coilNo + "对应的材质实绩:\n" + msg; if(!StringUtils.isEmpty(QLTY_ORD_DESC.toString())) msg = msg + "\n◆订单" + ordNO + "-" + ordSeq + "要求材质项目:\n" + QLTY_ORD_DESC.toString(); cro.setV_errMsg(msg); // CoreClientParam.ReturnInfo cro.setV_errCode(ordEqual); //对应客户端显示CoreClientParam.ReturnCode //cro.setResult("setResult:" + state); //CoreClientParam.ReturnObject return cro; } /** * 连退成品充当时不匹配的钢卷材质转换成订单要求材质保存到TBB02_WORK_QLTY_MS表中 * 此方法暂时没用到 * @author KM */ public CoreReturnObject coilQltyToOrd(String coilNo,String ordNO,String ordSeq,String REG_ID) { CoreReturnObject cro = new CoreReturnObject(); //获取订单要求材质项目sql String Sql1 = XmlSqlParsersFactory.getSql("UIE043010_ord_01.select"); //获取钢卷对应的材质项目sql String Sql2 = XmlSqlParsersFactory.getSql("UIE043010_ord_02.select"); Object[] ordParams = new Object[]{ordNO,ordSeq,ordNO,ordSeq}; String msg = ""; try { //获取订单要求的材质项目 ArrayList ordList = (ArrayList) this.getDao("KgDao").ExcuteQueryReturnList(Sql1,ordParams); System.out.println("ordQlty_sql------- " + Sql1); //获取钢卷对应的材质项目 ArrayList coilQlty_List = (ArrayList) this.getDao("KgDao").ExcuteQueryReturnList(Sql2,new String[] {coilNo}); System.out.println("coilQlty_sql------- " + Sql2); if(0 == ordList.size() || 0 == coilQlty_List.size()) { cro.setV_errMsg(msg); return cro; } Object val_8050 = null; //存放伸长率转换后的值 DecimalFormat df = new DecimalFormat("#0.000"); for (int j = 0; j < coilQlty_List.size(); j++) { Map map = (Map) coilQlty_List.get(j); String C_SMP_NO = map.get("SMP_NO").toString(); String C_SMP_CUT_LOC = map.get("SMP_CUT_LOC").toString(); String C_QLTY_CD = map.get("QLTY_CD").toString(); Object C_QLTY_VAL_WK = map.get("QLTY_VAL_WK"); //实绩值 Object C_QLTY_UNIT_WK = map.get("QLTY_UNIT_WK"); Object C_QLTY_TYPE_WK = map.get("QLTY_TYPE_WK"); Object C_QLTY_WK_TP = map.get("QLTY_WK_TP"); Object C_UPDATE_NO_TP = map.get("UPDATE_NO_TP"); Object C_QLTY_CD_AFTER = map.get("QLTY_CD_AFTER"); if(C_QLTY_VAL_WK == null) C_QLTY_VAL_WK = ""; if(C_QLTY_UNIT_WK == null) C_QLTY_UNIT_WK = ""; if(C_QLTY_TYPE_WK == null) C_QLTY_TYPE_WK = ""; if(C_QLTY_WK_TP == null) C_QLTY_WK_TP = ""; if(C_UPDATE_NO_TP == null) C_UPDATE_NO_TP = ""; if(C_QLTY_CD_AFTER == null) C_QLTY_CD_AFTER = ""; val_8050 = C_QLTY_VAL_WK; //只对伸长率、屈服强度、抗拉强度不匹配时进行转换 if(!"XX".equals(strIsStarwith(C_QLTY_CD))) { for (int t = 0; t < ordList.size(); t++) { Map tMap = (Map) ordList.get(t); String PROD_CD = tMap.get("QLTY_CD").toString(); if(C_QLTY_CD.equals(PROD_CD)) { break; //找到了匹配的材质项目就结束当前for循环 } else if(!"XX".equals(strIsStarwith(PROD_CD))) { if("EL".equals(strIsStarwith(C_QLTY_CD)) && "EL".equals(strIsStarwith(PROD_CD))) { //伸长率 if("EL05".equals(C_QLTY_CD) && !StringUtils.isEmpty(C_QLTY_VAL_WK.toString())) { //充当钢卷伸长率为A80 val_8050 = df.format(Double.valueOf(C_QLTY_VAL_WK.toString())*1.207); //A80转换成A50 } else if("EL05".equals(PROD_CD) && !StringUtils.isEmpty(C_QLTY_VAL_WK.toString())) { //订单伸长率为A80 val_8050 = df.format(Double.valueOf(C_QLTY_VAL_WK.toString())*0.829); //A50转换成A80 } C_QLTY_CD_AFTER = C_QLTY_CD; C_QLTY_CD = PROD_CD; C_QLTY_VAL_WK = val_8050; } else if("YS".equals(strIsStarwith(C_QLTY_CD)) && "YS".equals(strIsStarwith(PROD_CD))) { C_QLTY_CD_AFTER = C_QLTY_CD; C_QLTY_CD = PROD_CD; } else if("TE".equals(strIsStarwith(C_QLTY_CD)) && "TE".equals(strIsStarwith(PROD_CD))) { C_QLTY_CD_AFTER = C_QLTY_CD; C_QLTY_CD = PROD_CD; } } } } //检查是否存在同样的材质项目 String sql3 = XmlSqlParsersFactory.getSql("UIE043010_WORK_QLTY_MS.select"); ArrayList coilMsList = (ArrayList) this.getDao("KgDao").ExcuteQueryReturnList(sql3,new Object[]{C_SMP_NO,C_SMP_CUT_LOC,C_QLTY_CD}); if(null == coilMsList || 0 == coilMsList.size()){ //插入到质保书材质转换表中 insertWQMS(C_SMP_NO, C_SMP_CUT_LOC, C_QLTY_CD, C_QLTY_VAL_WK, C_QLTY_UNIT_WK, C_QLTY_TYPE_WK, C_QLTY_WK_TP, C_UPDATE_NO_TP, REG_ID, C_QLTY_CD_AFTER); } } } catch (Exception e) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); e.printStackTrace(new PrintStream(baos)); String exception = baos.toString(); cro.setV_errMsg("Error : " + exception); // CoreClientParam.ReturnInfo e.printStackTrace(); return cro; } cro.setV_errMsg(msg); // CoreClientParam.ReturnInfo //cro.setV_errCode(Integer.valueOf(state)); //对应客户端显示CoreClientParam.ReturnCode //cro.setResult("setResult:" + state); //CoreClientParam.ReturnObject return cro; } protected void insertWQMS(Object SMP_NO,Object SMP_CUT_LOC,Object QLTY_CD,Object QLTY_VAL_WK,Object QLTY_UNIT_WK,Object QLTY_TYPE_WK ,Object QLTY_WK_TP,Object UPDATE_NO_TP,Object REG_ID,Object QLTY_CD_AFTER) throws SQLException { String sql = XmlSqlParsersFactory.getSql("UIE043010_WORK_QLTY_MS.insert"); Object[] param2 = new Object[11]; param2[0] = SMP_NO; //试样号 param2[1] = SMP_CUT_LOC; param2[2] = QLTY_CD; param2[3] = QLTY_VAL_WK; param2[4] = QLTY_UNIT_WK; param2[5] = QLTY_TYPE_WK; param2[6] = QLTY_WK_TP; param2[7] = UPDATE_NO_TP; param2[8] = "UIE043010"; param2[9] = REG_ID; param2[10] = QLTY_CD_AFTER; this.getDao("KgDao").ExcuteNonQuery(sql, param2); } /** * 判断材质代码是否是以EL、YS、TE开头 * @return */ public String strIsStarwith(String qltyCD) { if(qltyCD.startsWith("EL")) return "EL"; else if(qltyCD.startsWith("YS")) return "YS"; else if(qltyCD.startsWith("TE")) return "TE"; else return "XX"; } }