| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- package UIB.UIB03.ZBS;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.List;
- import java.util.HashMap;
- import java.util.Map;
- import org.springframework.jdbc.support.rowset.SqlRowSet;
- import org.springframework.jdbc.support.rowset.SqlRowSetMetaData;
- import CoreFS.SA06.CoreReturnObject;
- import UIB.COM.XmlSqlParsersFactory;
- public class MapConverter
- {
- /**
- * @desc 表头转换
- * @param srs 查询出来的表头信息
- * @return
- */
- public HashMap getHeadMap(SqlRowSet srs)
- {
- HashMap map = new HashMap();
- SqlRowSetMetaData rsmd = srs.getMetaData();
- int count = rsmd.getColumnCount();
- String columnName = "";//列名
- if(srs.next())
- {
- for(int i = 1; i <= count ; i++)
- {
- columnName = rsmd.getColumnName(i);
- map.put(columnName, srs.getString(columnName));
- }
- }
- return map;
- }
- /**
- * @desc 多行、同一卷的信息生成为一个DataRowList
- * @param sqlID
- * @return
- * @throws Exception
- */
- public ArrayList getDataRowList(List srs , String qcTp) throws Exception
- {
- ArrayList list = new ArrayList();//生成的DataRowList放入ArrayList中
- CoreReturnObject cro = new CoreReturnObject();
- DataRowList drl = null;
-
- Iterator it = srs.iterator();
- Map ordMap = new HashMap();
- int i=0;
- String columnValue =null;
- while (it.hasNext()) {
- ordMap = (Map) it.next();
-
- for (Iterator iter = ordMap.entrySet().iterator(); iter.hasNext();) {
- Map.Entry entry = (Map.Entry) iter.next();
- String columnName = (String)entry.getKey();
-
- Object ob = entry.getValue();
- columnValue = ob.toString();
- break;
- /*if(!iter.hasNext())
- {
- System.out.println(columnName+"--------------------------------");
- }*/
- }
- if(i==0)
- {
- drl = new DataRowList();
- list.add(drl);
- setDataRowList(drl , ordMap , true , qcTp);
- }
- else if(columnValue.equals(drl.getValue(0)))
- {
- setDataRowList(drl , ordMap , false , qcTp);
- }
- else
- {
- drl = new DataRowList();
- list.add(drl);
- setDataRowList(drl, ordMap ,true , qcTp);
- }
- i++;
- }
-
-
- /*
- while(srs.next())
- {
- if(srs.isFirst())//第一行数据存放
- {
- drl = new DataRowList();
- list.add(drl);
- setDataRowList(drl , ordMap , true , qcTp);
- continue;
- }
- //若已经存放过数据,并且当前行的第一列的值与drl数组的最后一个的value值相同,则继续存放
- if(srs.getString(1).equals(drl.getValue(0)))
- {
- setDataRowList(drl , ordMap , false , qcTp);
- }
- else
- {
- drl = new DataRowList();
- list.add(drl);
- setDataRowList(drl, ordMap ,true , qcTp);
- }
- }*/
- // for(int i = 0; i < list.size() ; i++)//由于index是从0开始的,所以需要等号
- // {
- // DataRowList dx = (DataRowList)list.get(i);
- // dx.print();
- // System.out.println("###############################################################");
- // }
- return list;
- }
-
- /**
- * @desc 查询结果单行转换为DataRowList
- * @param columnCount 总列数
- * @param srs 查询出来数据的集合
- * @param flag 钢卷号等信息是否需要存储进来
- * @param qcTp q(QLTY)、c(CHEM)成分与材质区分
- * @return
- */
- private void setDataRowList(DataRowList drl , Map ordMap , boolean flag , String qcTp)
- {
- //SqlRowSetMetaData rsmd = srs.getMetaData();
- //int columnCount = rsmd.getColumnCount();//总列数
- String columnName = "";//列名
- String columnValue = "";//列值
- if(qcTp.equals(QltyCodeDef.CHEM_CD))//成分
- {
- String chemCD = "";//元素名
- String chemVal = "";//元素值
- String compYn = "";//元素类型(复合元素与单一元素)
- for (Iterator iter = ordMap.entrySet().iterator(); iter.hasNext();) {
- Map.Entry entry = (Map.Entry) iter.next();
- columnName = (String)entry.getKey();
-
- Object ob = entry.getValue();
- columnValue = ob.toString();
- if(columnName.equals(QltyCodeDef.ROW_FLAG) && flag)
- drl.put(columnName, columnValue);
- else if(columnName.equals(QltyCodeDef.CHEM_CD))//元素名
- chemCD = columnValue;
- else if(columnName.equals(QltyCodeDef.CHEM_VAL))//元素值
- chemVal = columnValue;
- else if(columnName.equals(QltyCodeDef.COMP_YN))//是否为复合元素
- compYn = columnValue;
- else if(flag)
- drl.put(columnName, columnValue);
- }
- drl.put(chemCD, chemVal , compYn);
- }
- }
- /**
- * 补充拉力项目。针对拉力的check,主要检查5大项是否均已存在,若小于4大项则增加缺少的项,不一定要5个全部存在
- */
- public static void replenishPullItem(DataRowList drl)
- {
- int index= 0;//为0则不补录项,因为没有拉力要求
- int endLoc = 0;//性能项目在DataRowList中结束的位置
- String[]qltyCD = new String[5];//保存代码
- String[]qltyNm = new String[5];//保存名称
-
- StringBuffer sBuffer = new StringBuffer();
- for(int i = drl.size()-1; i > 0; i--)
- {
- if( QltyCodeDef.TENSILE_TEST.equals(drl.getBigName(i) ))//若大名称为QltyCodeDef.TENSILE_TEST
- {
- if(endLoc==0) endLoc = i;//确定性能结束的位置
- sBuffer.append(drl.getKey(i)+",");//主键以“key1,key2,key3”的字符串形式存放
- }
- }//for end
-
- if( sBuffer.toString().indexOf(QltyCodeDef.YS_CD) == -1)//屈服
- {
- qltyCD[index] = QltyCodeDef.YS_CD;
- qltyNm[index++] = QltyCodeDef.YS_NM;
- }
-
- if( sBuffer.toString().indexOf(QltyCodeDef.TE_CD) == -1)//抗拉
- {
- qltyCD[index] = QltyCodeDef.TE_CD;
- qltyNm[index++] = QltyCodeDef.TE_NM;
- }
- if( sBuffer.toString().indexOf(QltyCodeDef.EL_CD) == -1)//伸长
- {
- qltyCD[index] = QltyCodeDef.TE_CD;
- qltyNm[index++] = QltyCodeDef.TE_NM;
- }
- if( sBuffer.toString().indexOf(QltyCodeDef.RP_CD) == -1)//
- {
- qltyCD[index] = QltyCodeDef.RP_CD;
- qltyNm[index++] = QltyCodeDef.RP_NM;
- }
-
- if( sBuffer.toString().indexOf(QltyCodeDef.YR_CD) == -1)//
- {
- qltyCD[index] = QltyCodeDef.YR_CD;
- qltyNm[index++] = QltyCodeDef.YR_NM;
- }
-
- if(index >0 && index < 4) //有拉力项目,且小于4项则增加
- {
- endLoc = endLoc+1;//从检验项目的后面一个开始插入
- for(int i = 0; i < index ;i++)
- {
- drl.add(endLoc+i, qltyCD[i], "", qltyNm[i], QltyCodeDef.TENSILE_TEST, "");
- }
- }
- }
- }
|