fa12365b0ebfdc903cf92f910a8f24ab8f2e171f.svn-base 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. package UIB.UIB03.ZBS;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import java.util.HashMap;
  7. import java.util.Map;
  8. import org.springframework.jdbc.support.rowset.SqlRowSet;
  9. import org.springframework.jdbc.support.rowset.SqlRowSetMetaData;
  10. import CoreFS.SA06.CoreReturnObject;
  11. import UIB.COM.XmlSqlParsersFactory;
  12. public class MapConverter
  13. {
  14. /**
  15. * @desc 表头转换
  16. * @param srs 查询出来的表头信息
  17. * @return
  18. */
  19. public HashMap getHeadMap(SqlRowSet srs)
  20. {
  21. HashMap map = new HashMap();
  22. SqlRowSetMetaData rsmd = srs.getMetaData();
  23. int count = rsmd.getColumnCount();
  24. String columnName = "";//列名
  25. if(srs.next())
  26. {
  27. for(int i = 1; i <= count ; i++)
  28. {
  29. columnName = rsmd.getColumnName(i);
  30. map.put(columnName, srs.getString(columnName));
  31. }
  32. }
  33. return map;
  34. }
  35. /**
  36. * @desc 多行、同一卷的信息生成为一个DataRowList
  37. * @param sqlID
  38. * @return
  39. * @throws Exception
  40. */
  41. public ArrayList getDataRowList(List srs , String qcTp) throws Exception
  42. {
  43. ArrayList list = new ArrayList();//生成的DataRowList放入ArrayList中
  44. CoreReturnObject cro = new CoreReturnObject();
  45. DataRowList drl = null;
  46. Iterator it = srs.iterator();
  47. Map ordMap = new HashMap();
  48. int i=0;
  49. String columnValue =null;
  50. while (it.hasNext()) {
  51. ordMap = (Map) it.next();
  52. for (Iterator iter = ordMap.entrySet().iterator(); iter.hasNext();) {
  53. Map.Entry entry = (Map.Entry) iter.next();
  54. String columnName = (String)entry.getKey();
  55. Object ob = entry.getValue();
  56. columnValue = ob.toString();
  57. break;
  58. /*if(!iter.hasNext())
  59. {
  60. System.out.println(columnName+"--------------------------------");
  61. }*/
  62. }
  63. if(i==0)
  64. {
  65. drl = new DataRowList();
  66. list.add(drl);
  67. setDataRowList(drl , ordMap , true , qcTp);
  68. }
  69. else if(columnValue.equals(drl.getValue(0)))
  70. {
  71. setDataRowList(drl , ordMap , false , qcTp);
  72. }
  73. else
  74. {
  75. drl = new DataRowList();
  76. list.add(drl);
  77. setDataRowList(drl, ordMap ,true , qcTp);
  78. }
  79. i++;
  80. }
  81. /*
  82. while(srs.next())
  83. {
  84. if(srs.isFirst())//第一行数据存放
  85. {
  86. drl = new DataRowList();
  87. list.add(drl);
  88. setDataRowList(drl , ordMap , true , qcTp);
  89. continue;
  90. }
  91. //若已经存放过数据,并且当前行的第一列的值与drl数组的最后一个的value值相同,则继续存放
  92. if(srs.getString(1).equals(drl.getValue(0)))
  93. {
  94. setDataRowList(drl , ordMap , false , qcTp);
  95. }
  96. else
  97. {
  98. drl = new DataRowList();
  99. list.add(drl);
  100. setDataRowList(drl, ordMap ,true , qcTp);
  101. }
  102. }*/
  103. // for(int i = 0; i < list.size() ; i++)//由于index是从0开始的,所以需要等号
  104. // {
  105. // DataRowList dx = (DataRowList)list.get(i);
  106. // dx.print();
  107. // System.out.println("###############################################################");
  108. // }
  109. return list;
  110. }
  111. /**
  112. * @desc 查询结果单行转换为DataRowList
  113. * @param columnCount 总列数
  114. * @param srs 查询出来数据的集合
  115. * @param flag 钢卷号等信息是否需要存储进来
  116. * @param qcTp q(QLTY)、c(CHEM)成分与材质区分
  117. * @return
  118. */
  119. private void setDataRowList(DataRowList drl , Map ordMap , boolean flag , String qcTp)
  120. {
  121. //SqlRowSetMetaData rsmd = srs.getMetaData();
  122. //int columnCount = rsmd.getColumnCount();//总列数
  123. String columnName = "";//列名
  124. String columnValue = "";//列值
  125. if(qcTp.equals(QltyCodeDef.CHEM_CD))//成分
  126. {
  127. String chemCD = "";//元素名
  128. String chemVal = "";//元素值
  129. String compYn = "";//元素类型(复合元素与单一元素)
  130. for (Iterator iter = ordMap.entrySet().iterator(); iter.hasNext();) {
  131. Map.Entry entry = (Map.Entry) iter.next();
  132. columnName = (String)entry.getKey();
  133. Object ob = entry.getValue();
  134. columnValue = ob.toString();
  135. if(columnName.equals(QltyCodeDef.ROW_FLAG) && flag)
  136. drl.put(columnName, columnValue);
  137. else if(columnName.equals(QltyCodeDef.CHEM_CD))//元素名
  138. chemCD = columnValue;
  139. else if(columnName.equals(QltyCodeDef.CHEM_VAL))//元素值
  140. chemVal = columnValue;
  141. else if(columnName.equals(QltyCodeDef.COMP_YN))//是否为复合元素
  142. compYn = columnValue;
  143. else if(flag)
  144. drl.put(columnName, columnValue);
  145. }
  146. drl.put(chemCD, chemVal , compYn);
  147. }
  148. }
  149. /**
  150. * 补充拉力项目。针对拉力的check,主要检查5大项是否均已存在,若小于4大项则增加缺少的项,不一定要5个全部存在
  151. */
  152. public static void replenishPullItem(DataRowList drl)
  153. {
  154. int index= 0;//为0则不补录项,因为没有拉力要求
  155. int endLoc = 0;//性能项目在DataRowList中结束的位置
  156. String[]qltyCD = new String[5];//保存代码
  157. String[]qltyNm = new String[5];//保存名称
  158. StringBuffer sBuffer = new StringBuffer();
  159. for(int i = drl.size()-1; i > 0; i--)
  160. {
  161. if( QltyCodeDef.TENSILE_TEST.equals(drl.getBigName(i) ))//若大名称为QltyCodeDef.TENSILE_TEST
  162. {
  163. if(endLoc==0) endLoc = i;//确定性能结束的位置
  164. sBuffer.append(drl.getKey(i)+",");//主键以“key1,key2,key3”的字符串形式存放
  165. }
  166. }//for end
  167. if( sBuffer.toString().indexOf(QltyCodeDef.YS_CD) == -1)//屈服
  168. {
  169. qltyCD[index] = QltyCodeDef.YS_CD;
  170. qltyNm[index++] = QltyCodeDef.YS_NM;
  171. }
  172. if( sBuffer.toString().indexOf(QltyCodeDef.TE_CD) == -1)//抗拉
  173. {
  174. qltyCD[index] = QltyCodeDef.TE_CD;
  175. qltyNm[index++] = QltyCodeDef.TE_NM;
  176. }
  177. if( sBuffer.toString().indexOf(QltyCodeDef.EL_CD) == -1)//伸长
  178. {
  179. qltyCD[index] = QltyCodeDef.TE_CD;
  180. qltyNm[index++] = QltyCodeDef.TE_NM;
  181. }
  182. if( sBuffer.toString().indexOf(QltyCodeDef.RP_CD) == -1)//
  183. {
  184. qltyCD[index] = QltyCodeDef.RP_CD;
  185. qltyNm[index++] = QltyCodeDef.RP_NM;
  186. }
  187. if( sBuffer.toString().indexOf(QltyCodeDef.YR_CD) == -1)//
  188. {
  189. qltyCD[index] = QltyCodeDef.YR_CD;
  190. qltyNm[index++] = QltyCodeDef.YR_NM;
  191. }
  192. if(index >0 && index < 4) //有拉力项目,且小于4项则增加
  193. {
  194. endLoc = endLoc+1;//从检验项目的后面一个开始插入
  195. for(int i = 0; i < index ;i++)
  196. {
  197. drl.add(endLoc+i, qltyCD[i], "", qltyNm[i], QltyCodeDef.TENSILE_TEST, "");
  198. }
  199. }
  200. }
  201. }