a2a99c2853791016a1e2b93563fc0e67f1f4d168.svn-base 32 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094
  1. package UIJ.UIJ03;
  2. import java.sql.PreparedStatement;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.util.ArrayList;
  6. import java.util.HashSet;
  7. import java.util.Iterator;
  8. import java.util.Set;
  9. import java.sql.Connection;
  10. import org.apache.commons.logging.Log;
  11. import org.apache.commons.logging.LogFactory;
  12. //import xin.glue.ui.common.DataSo;
  13. import UIB.COM.XmlSqlParsersFactory;
  14. import CoreFS.SA01.CoreIComponent;
  15. /**
  16. * 发货实绩录入与发行装车明细
  17. *
  18. * @author zsx
  19. * @date 2017-10-19
  20. */
  21. public class UIJ030060 extends CoreIComponent {
  22. private static Log logger = LogFactory.getLog(UIJ030060.class);
  23. /**
  24. * 根据钢卷号查找炉号或者式样号
  25. * @param params
  26. * @param connLocal 三期数据库连接
  27. * @param sqlIDxg3qSelectSMP 查询炉号或式样号sqlID
  28. * @return 返回三期数据库中去重后的炉号或者式样号集合
  29. */
  30. public Set<String> queryCHGOrSMP(ArrayList<String[]> params, Connection connLocal, String sqlIDxg3qSelectCHGOrSMP) {
  31. PreparedStatement pstm = null;
  32. ResultSet rs = null;
  33. Set<String> set = new HashSet<String>();
  34. String[] param;
  35. try {
  36. pstm = connLocal.prepareStatement(XmlSqlParsersFactory.getSql(sqlIDxg3qSelectCHGOrSMP));
  37. for(int i = 0; i < params.size(); i++) {
  38. param = params.get(i);
  39. //param[10]为钢卷号
  40. pstm.setString(1, param[10]);
  41. rs = pstm.executeQuery();
  42. while (rs.next()) {
  43. set.add(rs.getString(1));
  44. }
  45. }
  46. param = null;
  47. } catch (Exception e) {
  48. e.printStackTrace();
  49. return null;
  50. } finally {
  51. if(rs != null) {
  52. try {
  53. rs.close();
  54. rs = null;
  55. } catch (SQLException e) {
  56. e.printStackTrace();
  57. return null;
  58. }
  59. }
  60. if(pstm != null) {
  61. try {
  62. pstm.close();
  63. pstm = null;
  64. } catch (SQLException e) {
  65. e.printStackTrace();
  66. return null;
  67. }
  68. }
  69. }
  70. return set;
  71. }
  72. /**
  73. * 查找炉号
  74. * @param params
  75. * @param connLocal 三期数据库连接
  76. * @return 返回三期数据库中去重后的炉号集合
  77. */
  78. public Set<String> queryCHG(ArrayList<String[]> params, Connection connLocal) {
  79. PreparedStatement pstm = null;
  80. ResultSet rs = null;
  81. Set<String> set = new HashSet<String>();
  82. String[] param;
  83. try {
  84. String sql = "select substr(slab_no, 1,10) chgNo from c_tbl02_coil_comm where old_sampl_no = ? and rownum = 1 ";
  85. pstm = connLocal.prepareStatement(sql);
  86. for(int i = 0; i < params.size(); i++) {
  87. param = params.get(i);
  88. //param[10]为钢卷号
  89. pstm.setString(1, param[10]);
  90. rs = pstm.executeQuery();
  91. while (rs.next()) {
  92. set.add(rs.getString("chgNo"));
  93. }
  94. }
  95. param = null;
  96. } catch (Exception e) {
  97. e.printStackTrace();
  98. return null;
  99. } finally {
  100. if(rs != null) {
  101. try {
  102. rs.close();
  103. rs = null;
  104. } catch (SQLException e) {
  105. e.printStackTrace();
  106. return null;
  107. }
  108. }
  109. if(pstm != null) {
  110. try {
  111. pstm.close();
  112. pstm = null;
  113. } catch (SQLException e) {
  114. e.printStackTrace();
  115. return null;
  116. }
  117. }
  118. }
  119. return set;
  120. }
  121. /**
  122. * 检查优特数据库是否存在该炉号,如果存在则移除Set集合中的该炉号
  123. * @param params
  124. * @param conn 优特数据库连接
  125. * @param connLocal 三期数据库连接
  126. * @param sqlIDxg3qSelectCHG 查询炉号sqlID
  127. * @param sqlIDyouteSelectCHG 判断炉号在优特数据库中是否存在sqlID
  128. * @return 返回优特数据库中炉号不存在的、且在三期数据库中存在的炉号集合
  129. */
  130. public Set<String> checkCHG(ArrayList<String[]> params, Connection conn, Connection connLocal) {
  131. //获取三期数据库中的炉号
  132. Set<String> set = queryCHG(params, connLocal);
  133. if(set == null) {
  134. return null;
  135. }
  136. if(set.size() == 0) {
  137. return set;
  138. }
  139. PreparedStatement ps = null;
  140. ResultSet rs = null;
  141. try {
  142. Iterator<String> it = set.iterator();
  143. String sql = "select HEATNO from IF_RAW_MTR_COIL_CHEM where HEATNO = ? ";
  144. ps = conn.prepareStatement(sql);
  145. while (it.hasNext()) {
  146. ps.setString(1, it.next());
  147. rs = ps.executeQuery();
  148. //如果该炉号在优特数据库中,则在集合中移除该炉号
  149. if(rs.next()) {
  150. it.remove();
  151. }
  152. }
  153. } catch (Exception e) {
  154. e.printStackTrace();
  155. return null;
  156. } finally {
  157. if(rs != null) {
  158. try {
  159. rs.close();
  160. rs = null;
  161. } catch (SQLException e) {
  162. e.printStackTrace();
  163. return null;
  164. }
  165. }
  166. if(ps != null) {
  167. try {
  168. ps.close();
  169. ps = null;
  170. } catch (SQLException e) {
  171. e.printStackTrace();
  172. return null;
  173. }
  174. }
  175. }
  176. return set;
  177. }
  178. /**
  179. * 检查优特数据库是否存在该炉号或式样号,如果存在则移除Set集合中的该炉号或式样号
  180. * @param params
  181. * @param conn 优特数据库连接
  182. * @param connLocal 三期数据库连接
  183. * @param sqlIDxg3qSelectCHGOrSMP 查询炉号或样号sqlID
  184. * @param sqlIDyouteSelectCHGOrSMP 判断炉号或式样号在优特数据库中是否存在sqlID
  185. * @return 返回优特数据库中炉号不存在的、且在三期数据库中存在的炉号集合,
  186. * 或者返回优特数据库中式样号不存在的、且在三期数据库中存在的式样号集合
  187. */
  188. public Set<String> checkCHGOrSMP(ArrayList<String[]> params, Connection conn, Connection connLocal,
  189. String sqlIDxg3qSelectCHGOrSMP, String sqlIDyouteSelectCHGOrSMP) {
  190. PreparedStatement ps = null;
  191. ResultSet rs = null;
  192. //获取三期数据库中的炉号或者式样号集合
  193. Set<String> set = queryCHGOrSMP(params, connLocal, sqlIDxg3qSelectCHGOrSMP);
  194. if(set == null) {
  195. return null;
  196. }
  197. if(set.size() == 0) {
  198. return set;
  199. }
  200. try {
  201. Iterator<String> it = set.iterator();
  202. ps = conn.prepareStatement(XmlSqlParsersFactory.getSql(sqlIDyouteSelectCHGOrSMP));
  203. while (it.hasNext()) {
  204. //it.next()为炉号或者式样号
  205. ps.setString(1, it.next());
  206. rs = ps.executeQuery();
  207. //如果该炉号在优特数据库中,则在集合中移除该炉号
  208. if(rs.next()) {
  209. it.remove();
  210. }
  211. }
  212. } catch (Exception e) {
  213. e.printStackTrace();
  214. return null;
  215. } finally {
  216. if(rs != null) {
  217. try {
  218. rs.close();
  219. rs = null;
  220. } catch (SQLException e) {
  221. e.printStackTrace();
  222. return null;
  223. }
  224. }
  225. if(ps != null) {
  226. try {
  227. ps.close();
  228. ps = null;
  229. } catch (SQLException e) {
  230. e.printStackTrace();
  231. return null;
  232. }
  233. }
  234. }
  235. return set;
  236. }
  237. /**
  238. * 获取优特数据库信息
  239. * @param params
  240. * @param connLocal 三期数据库连接
  241. * @param sqlID xml中的id
  242. * @return
  243. */
  244. public ArrayList<Youte> getYoute(ArrayList<String[]> params, Connection connLocal, String sqlID) {
  245. PreparedStatement pstm = null;
  246. ResultSet rs = null;
  247. ArrayList<Youte> list = new ArrayList<Youte>();
  248. String[] param;
  249. Youte youte = null;
  250. try {
  251. pstm = connLocal.prepareStatement(XmlSqlParsersFactory.getSql(sqlID));
  252. for (int i = 0; i < params.size(); i++) {
  253. param = params.get(i);
  254. //param[10]为钢卷号
  255. pstm.setString(1, param[10]);
  256. rs = pstm.executeQuery();
  257. while (rs.next()) {
  258. youte = new Youte();
  259. youte.setOld_sampl_no(rs.getString("OLD_SAMPL_NO"));
  260. youte.setCoil_source(rs.getString("COIL_SOURCE"));
  261. youte.setCoil_sort(rs.getString("COIL_SORT"));
  262. youte.setOrdcust_cd(rs.getString("ORDCUST_CD"));
  263. youte.setCust_nm(rs.getString("CUST_NM"));
  264. youte.setCharge(rs.getString("CHARGE"));
  265. youte.setSmp_no(rs.getString("SMP_NO"));
  266. youte.setPrd_code(rs.getString("PRD_CODE"));
  267. youte.setPrd_name(rs.getString("PRD_NAME"));
  268. youte.setStd_code(rs.getString("STD_CODE"));
  269. youte.setStd_name(rs.getString("STD_NAME"));
  270. youte.setSteel_code(rs.getString("STEEL_CODE"));
  271. youte.setSteel_name(rs.getString("STEEL_NAME"));
  272. youte.setCoil_thk(rs.getBigDecimal("COIL_THK"));
  273. youte.setCoil_wth(rs.getBigDecimal("COIL_WTH"));
  274. youte.setCoil_len(rs.getBigDecimal("COIL_LEN"));
  275. youte.setCoil_india(rs.getBigDecimal("COIL_INDIA"));
  276. youte.setCoil_outdia(rs.getBigDecimal("COIL_OUTDIA"));
  277. youte.setCoil_wgt(rs.getBigDecimal("COIL_WGT"));
  278. youte.setAct_wgt(rs.getBigDecimal("ACT_WGT"));
  279. youte.setMill_dtime(rs.getString("MILL_DTIME"));
  280. youte.setFlaw_code1(rs.getString("FLAW_CODE1"));
  281. youte.setFlaw_code1(rs.getString("FLAW_NAME1"));
  282. youte.setFlaw_code2(rs.getString("FLAW_CODE2"));
  283. youte.setFlaw_code2(rs.getString("FLAW_NAME2"));
  284. youte.setFlaw_code3(rs.getString("FLAW_CODE3"));
  285. youte.setFlaw_code3(rs.getString("FLAW_NAME3"));
  286. youte.setFlaw_code4(rs.getString("FLAW_CODE4"));
  287. youte.setFlaw_code4(rs.getString("FLAW_NAME4"));
  288. youte.setFlaw_code5(rs.getString("FLAW_CODE5"));
  289. youte.setFlaw_code5(rs.getString("FLAW_NAME5"));
  290. youte.setIngr_dec_grd(rs.getString("INGR_DEC_GRD"));
  291. youte.setIngr_dec_name(rs.getString("INGR_DEC_NAME"));
  292. youte.setExtshape_dec_grd(rs.getString("EXTSHAPE_DEC_GRD"));
  293. youte.setExtshape_dec_name(rs.getString("EXTSHAPE_DEC_NAME"));
  294. youte.setSize_dec_rst(rs.getString("SIZE_DEC_RST"));
  295. youte.setSize_dec_name(rs.getString("SIZE_DEC_NAME"));
  296. youte.setMatlqlty_dec_grd(rs.getString("MATLQLTY_DEC_GRD"));
  297. youte.setMatlqlty_dec_name(rs.getString("MATLQLTY_DEC_NAME"));
  298. youte.setWgt_dec_rst(rs.getString("WGT_DEC_RST"));
  299. youte.setWgt_dec_name(rs.getString("WGT_DEC_NAME"));
  300. youte.setTot_dec_grd(rs.getString("TOT_DEC_GRD"));
  301. youte.setTot_dec_name(rs.getString("TOT_DEC_NAME"));
  302. youte.setStatus(rs.getString("STATUS"));
  303. youte.setRemark(rs.getString("REMARK"));
  304. youte.setCreate_opr(rs.getString("CREATE_OPR"));
  305. youte.setOrderNo(rs.getString("ORD_NO"));
  306. youte.setProdOrderNo(rs.getString("ORD_SEQ"));
  307. youte.setOrd_nm(rs.getString("ORD_NM"));
  308. youte.setInstr_coil_thk(rs.getString("INSTR_COIL_THK"));
  309. youte.setInstr_coil_wth(rs.getString("INSTR_COIL_WTH"));
  310. youte.setDliv_tp(rs.getString("DLIV_TP"));
  311. youte.setTrans_car_no(rs.getString("TRANS_CAR_NO"));
  312. youte.setPackagel(rs.getString("PACKAGEL"));
  313. youte.setDestpcd(rs.getString("DESTPCD"));
  314. youte.setDDC_STL_GRD(rs.getString("DDC_STL_GRD"));
  315. youte.setORD_WGT(rs.getString("ORD_WGT"));
  316. list.add(youte);
  317. }
  318. youte = null;
  319. }
  320. param = null;
  321. } catch (Exception e) {
  322. e.printStackTrace();
  323. return null;
  324. }finally {
  325. if(rs != null) {
  326. try {
  327. rs.close();
  328. rs = null;
  329. } catch (SQLException e) {
  330. e.printStackTrace();
  331. return null;
  332. }
  333. }
  334. if(pstm != null) {
  335. try {
  336. pstm.close();
  337. } catch (SQLException e) {
  338. e.printStackTrace();
  339. return null;
  340. }
  341. }
  342. }
  343. return list;
  344. }
  345. /**
  346. * 根据炉号获取三期成分实绩
  347. * @param params
  348. * @param conn 优特数据库连接
  349. * @param connLocal 三期数据库连接
  350. * @param sqlIDxg3qSelectCHG 查询炉号sqlID
  351. * @param sqlIDyouteSelectCHG 判断炉号在优特数据库中是否存在sqlID
  352. */
  353. public ArrayList<YouteCHEM> getCHEM(ArrayList<String[]> params, Connection conn, Connection connLocal,
  354. String sqlIDxg3qSelectCHG, String sqlIDyouteSelectCHG) {
  355. //获取炉号
  356. Set<String> set = checkCHGOrSMP(params, conn, connLocal, sqlIDxg3qSelectCHG, sqlIDyouteSelectCHG);
  357. if(set == null) {
  358. return null;
  359. }
  360. PreparedStatement pstm = null;
  361. ResultSet rs = null;
  362. //用来接收成分实绩
  363. ArrayList<YouteCHEM> listCHEM = new ArrayList<YouteCHEM>();
  364. YouteCHEM yChem = null;
  365. try {
  366. pstm = connLocal.prepareStatement(XmlSqlParsersFactory.getSql("UIJ030060_xg3qCHEM.select"));
  367. for(String str : set) {
  368. pstm.setString(1, str);
  369. rs = pstm.executeQuery();
  370. while(rs.next()) {
  371. yChem = new YouteCHEM();
  372. yChem.setCharge_no(rs.getString("CHARGE_NO"));
  373. yChem.setChem_cd(rs.getString("CHEM_CD"));
  374. yChem.setChem_val(rs.getBigDecimal("CHEM_VAL"));
  375. yChem.setCreate_opr(rs.getString("CREATE_OPR"));
  376. yChem.setReg_dtime(rs.getString("REG_DTIME"));
  377. yChem.setRemark(rs.getString("REMARK"));
  378. listCHEM.add(yChem);
  379. }
  380. yChem = null;
  381. }
  382. set = null;
  383. } catch (SQLException e) {
  384. e.printStackTrace();
  385. return null;
  386. }finally {
  387. if(rs != null) {
  388. try {
  389. rs.close();
  390. rs = null;
  391. } catch (SQLException e) {
  392. e.printStackTrace();
  393. return null;
  394. }
  395. }
  396. if(pstm != null) {
  397. try {
  398. pstm.close();
  399. pstm = null;
  400. } catch (SQLException e) {
  401. e.printStackTrace();
  402. return null;
  403. }
  404. }
  405. }
  406. return listCHEM;
  407. }
  408. /**
  409. * 根据式样号获取三期成分实绩
  410. * @param params
  411. * @param conn 优特数据库连接
  412. * @param connLocal 三期数据库连接
  413. * @param sqlIDxg3qSelectCHGOrSMP 查询炉号或式样号sqlID
  414. * @param sqlIDyouteSelectCHGOrSMP 判断炉号或式样号在优特数据库中是否存在sqlID
  415. */
  416. public ArrayList<YouteQLTY> getQLTY(ArrayList<String[]> params, Connection conn, Connection connLocal,
  417. String sqlIDxg3qSelectCHGOrSMP, String sqlIDyouteSelectCHGOrSMP) {
  418. //获取炉号或式样号
  419. Set<String> set = checkCHGOrSMP(params, conn, connLocal, sqlIDxg3qSelectCHGOrSMP, sqlIDyouteSelectCHGOrSMP);
  420. //用来接收成分实绩
  421. ArrayList<YouteQLTY> listQLTY = new ArrayList<YouteQLTY>();
  422. if(set == null) {
  423. return null;
  424. }
  425. if(set.size() == 0) {
  426. return listQLTY;
  427. }
  428. PreparedStatement pstm = null, pstm1 = null;
  429. ResultSet rs = null,rs1=null;
  430. YouteQLTY yQlty = null;
  431. try {
  432. pstm = connLocal.prepareStatement(XmlSqlParsersFactory.getSql("UIJ030060_xg3qQLTY.select"));
  433. for(String str : set) {
  434. pstm.setString(1, str);
  435. rs = pstm.executeQuery();
  436. while(rs.next()) {
  437. yQlty = new YouteQLTY();
  438. yQlty.setSmp_no(rs.getString("SMP_NO"));
  439. yQlty.setQlty_cd(rs.getString("QLTY_CD"));
  440. yQlty.setQlty_cd_cfnm(rs.getString("QLTY_CD_CFNM"));
  441. yQlty.setQlty_val_wk(rs.getString("QLTY_VAL_WK"));
  442. yQlty.setQlty_unit_wk(rs.getString("QLTY_UNIT_WK"));
  443. yQlty.setPfmc_unit_name(rs.getString("PFMC_UNIT_NAME"));
  444. yQlty.setQlty_type_wk(rs.getString("QLTY_TYPE_WK"));
  445. yQlty.setSm_cfnm(rs.getString("SM_CFNM"));
  446. yQlty.setReg_dtime(rs.getString("REG_DTIME"));
  447. yQlty.setRemark(rs.getString("REMARK"));
  448. yQlty.setCreate_opr(rs.getString("CREATE_OPR"));
  449. yQlty.setItem_code_d(rs.getString("Item_code_d"));
  450. yQlty.setItem_code_s(rs.getString("item_code_s"));
  451. yQlty.setItem_code_t(rs.getString("Item_code_t"));
  452. yQlty.setItem_name_d(rs.getString("Item_name_d"));
  453. yQlty.setItem_name_s(rs.getString("Item_name_s"));
  454. yQlty.setItem_name_t(rs.getString("Item_name_t"));
  455. yQlty.setPhy_code_l(rs.getString("Phy_code_l"));
  456. yQlty.setPhy_code_m(rs.getString("Phy_code_m"));
  457. yQlty.setPhy_code_s(rs.getString("Phy_code_s"));
  458. yQlty.setPhy_name_l(rs.getString("Phy_name_l"));
  459. yQlty.setPhy_name_m(rs.getString("Phy_name_m"));
  460. yQlty.setPhy_name_s(rs.getString("Phy_name_s"));
  461. yQlty.setXh(rs.getString("xh"));
  462. if("A3".equals(rs.getString("QLTY_TYPE_WK")))//针对需要三个值的拉力
  463. {
  464. pstm1 = connLocal.prepareStatement(XmlSqlParsersFactory.getSql("UIJ030060_QLTYLL.select"));
  465. pstm1.setString(1, rs.getString("SMP_NO"));
  466. pstm1.setString(2, rs.getString("QLTY_CD"));
  467. rs1 = pstm1.executeQuery();
  468. while(rs1.next()) {
  469. if(rs1.getString("QLTY_SEQ").equals("A1"))
  470. {
  471. yQlty.setQlty_val_wk1(rs1.getString("QLTY_VAL_WK"));
  472. }
  473. else if(rs1.getString("QLTY_SEQ").equals("A2"))
  474. {
  475. yQlty.setQlty_val_wk2(rs1.getString("QLTY_VAL_WK"));
  476. }
  477. else
  478. {
  479. yQlty.setQlty_val_wk(rs1.getString("QLTY_VAL_WK"));
  480. yQlty.setQlty_val_wk3(rs.getString("QLTY_VAL_WK"));
  481. }
  482. }
  483. }
  484. listQLTY.add(yQlty);
  485. }
  486. yQlty = null;
  487. }
  488. set = null;
  489. } catch (SQLException e) {
  490. e.printStackTrace();
  491. return null;
  492. } finally {
  493. if(rs != null) {
  494. try {
  495. rs.close();
  496. rs = null;
  497. } catch (SQLException e) {
  498. e.printStackTrace();
  499. return null;
  500. }
  501. }
  502. if(pstm != null) {
  503. try {
  504. pstm.close();
  505. pstm = null;
  506. } catch (SQLException e) {
  507. e.printStackTrace();
  508. return null;
  509. }
  510. }
  511. }
  512. return listQLTY;
  513. }
  514. /**
  515. * 插入材质实绩
  516. * @param params
  517. * @param conn 优特数据库连接
  518. * @param connLocal 三期数据库连接
  519. * @param sqlIDxg3qSelectSMP 查询炉号或式样号sqlID
  520. * @param sqlIDyouteSelectSMP 判断炉号或式样号在优特数据库中是否存在sqlID
  521. * @param databaseName 数据库名称
  522. * @return boolean true:表示插入材质实绩成功
  523. */
  524. public boolean insertQLTY(ArrayList<String[]> params, Connection conn, Connection connLocal,
  525. String sqlIDxg3qSelectCHGOrSMP, String sqlIDyouteSelectCHGOrSMP, String databaseName) {
  526. //获取三期成分实绩
  527. ArrayList<YouteQLTY> listQLTY
  528. = getQLTY(params, conn, connLocal, sqlIDxg3qSelectCHGOrSMP, sqlIDyouteSelectCHGOrSMP);
  529. if(listQLTY == null) {
  530. logger.error("从本地三期数据库获取优特材质实绩数据失败");
  531. return false;
  532. }
  533. if(listQLTY.size() == 0) {
  534. return true;
  535. }
  536. PreparedStatement ps = null;
  537. // PreparedStatement psLocal = null;
  538. int[] m = {};
  539. try {
  540. //获取prepareStatement
  541. ps = conn.prepareStatement(XmlSqlParsersFactory.getSql("UIJ030060_youteQLTY.insert"));
  542. // psLocal = conn.prepareStatement(XmlSqlParsersFactory.getSql("UIJ030060_youtejilu_caizhi.insert"));
  543. for(YouteQLTY yQlty : listQLTY) {
  544. /*
  545. ps.setString(1, yQlty.getSmp_no());
  546. ps.setString(2, yQlty.getQlty_cd());
  547. ps.setString(3, yQlty.getQlty_cd_cfnm());
  548. ps.setBigDecimal(4, yQlty.getQlty_val_wk());
  549. ps.setString(5, yQlty.getQlty_unit_wk());
  550. ps.setString(6, yQlty.getPfmc_unit_name());
  551. ps.setString(7, yQlty.getQlty_type_wk());
  552. ps.setString(8, yQlty.getSm_cfnm());
  553. ps.setString(9, yQlty.getReg_dtime());
  554. ps.setString(10, yQlty.getRemark());
  555. ps.setString(11, yQlty.getCreate_opr());
  556. */
  557. //添加到批量操作里面
  558. ps.setString(1, yQlty.getSmp_no());
  559. ps.setString(2, yQlty.getXh());
  560. ps.setString(3, "1");
  561. ps.setString(4, yQlty.getQlty_val_wk());
  562. ps.setString(5, yQlty.getQlty_val_wk1());
  563. ps.setString(6, yQlty.getQlty_val_wk2());
  564. ps.setString(7, yQlty.getQlty_val_wk3());
  565. ps.setString(8, yQlty.getPhy_code_l());
  566. ps.setString(9, yQlty.getPhy_name_l());
  567. ps.setString(10, yQlty.getPhy_code_m());
  568. ps.setString(11, yQlty.getPhy_name_m());
  569. ps.setString(12, yQlty.getPhy_code_s());
  570. ps.setString(13,yQlty.getPhy_name_s());
  571. ps.setString(14, yQlty.getItem_code_d());
  572. ps.setString(15, yQlty.getItem_name_d());
  573. ps.setString(16, yQlty.getItem_code_t());
  574. ps.setString(17, yQlty.getItem_name_t());
  575. ps.setString(18, yQlty.getItem_code_s());
  576. ps.setString(19, yQlty.getItem_name_s());
  577. ps.setString(20, yQlty.getQlty_cd());
  578. ps.setString(21, yQlty.getQlty_cd_cfnm());
  579. ps.addBatch();
  580. }
  581. m = ps.executeBatch();
  582. } catch (Exception e) {
  583. e.printStackTrace();
  584. logger.error("保存优特材质实绩时,数据库连接发生异常,数据保存失败");
  585. logger.error("保存优特材质实绩时发生异常原因:" + e);
  586. return false;
  587. }finally {
  588. if(ps != null) {
  589. try {
  590. ps.close();
  591. ps = null;
  592. } catch (SQLException e) {
  593. e.printStackTrace();
  594. logger.error("保存优特材质实绩后关闭ps时发生异常:" + e);
  595. return false;
  596. }
  597. }
  598. // if(psLocal != null) {
  599. // try {
  600. // psLocal.close();
  601. // psLocal = null;
  602. // } catch (SQLException e) {
  603. // e.printStackTrace();
  604. // logger.error("保存优特材质实绩后关闭psLocal时发生异常:" + e);
  605. // return false;
  606. // }
  607. // }
  608. }
  609. return m.length == listQLTY.size();
  610. }
  611. /**
  612. * 插入成分实绩
  613. * @param params
  614. * @param conn 优特数据库连接
  615. * @param connLocal 三期数据库连接
  616. * @param sqlIDxg3qSelectCHG 查询炉号sqlID
  617. * @param sqlIDyouteSelectCHG 判断炉号在优特数据库中是否存在sqlID
  618. * @param databaseName 数据库名称
  619. * @return boolean true:插入成分实绩成功
  620. */
  621. public boolean insertCHEM(ArrayList<String[]> params, Connection conn, Connection connLocal,
  622. String sqlIDxg3qSelectCHG, String sqlIDyouteSelectCHG, String databaseName) {
  623. PreparedStatement ps = null;
  624. // PreparedStatement psLocal = null;
  625. ArrayList<YouteCHEM> listCHEM = new ArrayList<YouteCHEM>();
  626. int[] m = {};
  627. try {
  628. //获取三期成分实绩
  629. listCHEM = getCHEM(params, conn, connLocal, sqlIDxg3qSelectCHG, sqlIDyouteSelectCHG);
  630. if(listCHEM == null) {
  631. logger.error("从本地三期数据库获取优特成分实绩数据失败");
  632. return false;
  633. }
  634. if(listCHEM.size() == 0) {
  635. return true;
  636. }
  637. //获取prepareStatement
  638. ps = conn.prepareStatement(XmlSqlParsersFactory.getSql("UIJ030060_youteCHEM.insert"));
  639. // psLocal = conn.prepareStatement(XmlSqlParsersFactory.getSql("UIJ030060_youtejilu_chengfen.insert"));
  640. for(YouteCHEM yChem : listCHEM) {
  641. // psLocal.setString(1, "if_raw_mtr_coil_chem");
  642. // psLocal.setString(2, yChem.getCharge_no());
  643. // psLocal.setString(3, yChem.getChem_cd());
  644. // psLocal.setString(4, databaseName);
  645. ps.setString(1, yChem.getCharge_no());
  646. ps.setString(2, yChem.getChem_cd());
  647. ps.setBigDecimal(3, yChem.getChem_val());
  648. ps.setString(4, yChem.getReg_dtime());
  649. ps.setString(5, yChem.getRemark());
  650. ps.setString(6, yChem.getCreate_opr());
  651. //添加到批量操作里面
  652. ps.addBatch();
  653. // psLocal.addBatch();
  654. }
  655. // psLocal.executeBatch();
  656. m = ps.executeBatch();
  657. } catch (Exception e) {
  658. e.printStackTrace();
  659. logger.error("保存优特成分实绩时,数据库连接发生异常,数据保存失败");
  660. logger.error("保存优特成分实绩时发生异常原因:" + e);
  661. return false;
  662. }finally {
  663. if(ps != null) {
  664. try {
  665. ps.close();
  666. ps = null;
  667. } catch (SQLException e) {
  668. e.printStackTrace();
  669. logger.error("保存优特成分实绩后关闭ps时发生异常:" + e);
  670. return false;
  671. }
  672. }
  673. // if(psLocal != null) {
  674. // try {
  675. // psLocal.close();
  676. // psLocal = null;
  677. // } catch (SQLException e) {
  678. // e.printStackTrace();
  679. // logger.error("保存优特成分实绩后关闭psLocal时发生异常:" + e);
  680. // return false;
  681. // }
  682. // }
  683. }
  684. return m.length == listCHEM.size();
  685. }
  686. /**
  687. * 插入优特主数据
  688. * @param params
  689. * @param conn 优特数据库连接
  690. * @param connLocal 本地三期数据库连接
  691. * @param databaseName 数据库名称
  692. * @return boolean true:表示插入优特主数据成功
  693. */
  694. public boolean insertYoute(ArrayList<String[]> params, Connection conn, Connection connLocal,
  695. String sqlIDSelect, String databaseName) {
  696. PreparedStatement ps = null;
  697. PreparedStatement psLocal = null;
  698. PreparedStatement psDele = null;
  699. PreparedStatement psupd = null;
  700. ArrayList<Youte> list = new ArrayList<Youte>();
  701. ArrayList<Youte> list2 = new ArrayList<Youte>();//存放删除数据,在每次写入前先对优特钢数据库进行删除
  702. String sqlIDChk = "UIJ030060_xg3qtbl.SELECT";
  703. int[] m = {};
  704. try {
  705. list = getYoute(params, connLocal, sqlIDSelect);
  706. list2 = getYoute(params, connLocal, sqlIDChk);
  707. if(list == null) {
  708. logger.error("从本地三期数据库获取优特主数据失败");
  709. return false;
  710. }
  711. if(list.size() == 0) {
  712. return true;
  713. }
  714. //获取prepareStatement
  715. ps = conn.prepareStatement(XmlSqlParsersFactory.getSql("UIJ030060_youte.insert"));
  716. psLocal = connLocal.prepareStatement(XmlSqlParsersFactory.getSql("UIJ030060_youtejilu_zhu.insert"));
  717. if(list2.size()>0){
  718. //删除
  719. psDele = conn.prepareStatement(XmlSqlParsersFactory.getSql("UIJ030060_youte.delete"));
  720. for(Youte youte2 : list2) {
  721. psDele.setString(1, youte2.getOld_sampl_no());
  722. psDele.addBatch();
  723. }
  724. //执行批量操作
  725. psDele.executeBatch();
  726. m = psDele.executeBatch();
  727. }
  728. for(Youte youte : list) {
  729. psLocal.setString(1, "if_raw_mtr_coil_m");
  730. psLocal.setString(2, youte.getOld_sampl_no());
  731. psLocal.setString(3, databaseName);
  732. ps.setString(1, youte.getOld_sampl_no());
  733. ps.setString(2, youte.getCoil_source());
  734. ps.setString(3, youte.getCoil_sort());
  735. ps.setString(4, youte.getOrdcust_cd());
  736. ps.setString(5, youte.getCust_nm());
  737. ps.setString(6, youte.getCharge());
  738. if(youte.getSmp_no() == null || "".equals(youte.getSmp_no())) {
  739. ps.setString(7, "无试样号");
  740. } else {
  741. ps.setString(7, youte.getSmp_no());
  742. }
  743. ps.setString(8, youte.getPrd_code());
  744. ps.setString(9, youte.getPrd_name());
  745. ps.setString(10, youte.getStd_code());
  746. ps.setString(11, youte.getStd_name());
  747. ps.setString(12, youte.getSteel_code());
  748. ps.setString(13, youte.getSteel_name());
  749. ps.setBigDecimal(14, youte.getCoil_thk());
  750. ps.setBigDecimal(15, youte.getCoil_wth());
  751. ps.setBigDecimal(16, youte.getCoil_len());
  752. ps.setBigDecimal(17, youte.getCoil_india());
  753. ps.setBigDecimal(18, youte.getCoil_outdia());
  754. ps.setBigDecimal(19, youte.getCoil_wgt());
  755. ps.setBigDecimal(20, youte.getAct_wgt());
  756. ps.setString(21, youte.getMill_dtime());
  757. ps.setString(22, youte.getFlaw_code1());
  758. ps.setString(23, youte.getFlaw_name1());
  759. ps.setString(24, youte.getFlaw_code2());
  760. ps.setString(25, youte.getFlaw_name2());
  761. ps.setString(26, youte.getFlaw_code3());
  762. ps.setString(27, youte.getFlaw_name3());
  763. ps.setString(28, youte.getFlaw_code4());
  764. ps.setString(29, youte.getFlaw_name4());
  765. ps.setString(30, youte.getFlaw_code5());
  766. ps.setString(31, youte.getFlaw_name5());
  767. ps.setString(32, youte.getIngr_dec_grd());
  768. ps.setString(33, youte.getIngr_dec_name());
  769. ps.setString(34, youte.getExtshape_dec_grd());
  770. ps.setString(35, youte.getExtshape_dec_name());
  771. ps.setString(36, youte.getSize_dec_rst());
  772. ps.setString(37, youte.getSize_dec_name());
  773. ps.setString(38, youte.getMatlqlty_dec_grd());
  774. ps.setString(39, youte.getMatlqlty_dec_name());
  775. ps.setString(40, youte.getWgt_dec_rst());
  776. ps.setString(41, youte.getWgt_dec_name());
  777. ps.setString(42, youte.getTot_dec_grd());
  778. ps.setString(43, youte.getTot_dec_name());
  779. ps.setString(44, youte.getStatus());
  780. ps.setString(45, youte.getRemark());
  781. ps.setString(46, youte.getCreate_opr());
  782. ps.setString(47, youte.getOrderNo());
  783. ps.setString(48, youte.getProdOrderNo());
  784. ps.setString(49, youte.getOrd_nm());
  785. ps.setString(50, youte.getInstr_coil_thk());
  786. ps.setString(51, youte.getInstr_coil_wth());
  787. ps.setString(52, youte.getDliv_tp());
  788. ps.setString(53, youte.getTrans_car_no());
  789. ps.setString(54, youte.getPackagel());
  790. ps.setString(55, youte.getDestpcd());
  791. ps.setString(56, youte.getDDC_STL_GRD());
  792. ps.setString(57, youte.getORD_WGT());
  793. //添加到批量操作里面
  794. ps.addBatch();
  795. psLocal.addBatch();
  796. }
  797. //执行批量操作
  798. psLocal.executeBatch();
  799. m = ps.executeBatch();
  800. if(list2.size()>0){
  801. //删除数据之后新数据标志变为’2‘
  802. psupd = conn.prepareStatement(XmlSqlParsersFactory.getSql("UIJ030060_youte.update"));
  803. for(Youte youte2 : list2) {
  804. psupd.setString(1, youte2.getOld_sampl_no());
  805. psupd.addBatch();
  806. }
  807. //执行批量操作
  808. psupd.executeBatch();
  809. int[] a = psupd.executeBatch();
  810. }
  811. } catch (Exception e) {
  812. e.printStackTrace();
  813. logger.error("保存优特主数据时,数据库连接发生异常,数据保存失败");
  814. logger.error("保存优特主数据时发生异常原因:" + e);
  815. return false;
  816. }finally {
  817. if(ps != null) {
  818. try {
  819. ps.close();
  820. ps = null;
  821. } catch (SQLException e) {
  822. e.printStackTrace();
  823. logger.error("保存优特主数据后关闭ps时发生异常:" + e);
  824. return false;
  825. }
  826. }
  827. if(psLocal != null) {
  828. try {
  829. psLocal.close();
  830. psLocal = null;
  831. } catch (SQLException e) {
  832. e.printStackTrace();
  833. logger.error("保存优特主数据后关闭psLocal时发生异常:" + e);
  834. return false;
  835. }
  836. }
  837. if(psDele != null) {
  838. try {
  839. psDele.close();
  840. psDele = null;
  841. } catch (SQLException e) {
  842. e.printStackTrace();
  843. logger.error("保存优特主数据后关闭psDele时发生异常:" + e);
  844. return false;
  845. }
  846. }
  847. if(psupd != null) {
  848. try {
  849. psupd.close();
  850. psupd = null;
  851. } catch (SQLException e) {
  852. e.printStackTrace();
  853. logger.error("保存优特主数据后关闭psDele时发生异常:" + e);
  854. return false;
  855. }
  856. }
  857. }
  858. return m.length == list.size();
  859. }
  860. /**
  861. * 保存中间库信息
  862. * @param params
  863. */
  864. public void saveYouTeTblData(ArrayList<String[]> params) {
  865. if(params == null || params.size() == 0) {
  866. logger.error("没有需要保存到中间库的优特数据");
  867. return;
  868. }
  869. //优特数据库连接
  870. Connection conn = null;
  871. //本地三期数据库连接
  872. Connection connLocal = null;
  873. try {
  874. //获取连接
  875. //conn = this.getDao("YtDao").getConnection();
  876. conn = this.getDao("KgDao").getConnection();
  877. //conn = DataSo.getDataSource2().getConnection();
  878. connLocal = this.getDao("KgDao").getConnection();
  879. //设置事务属性
  880. conn.setAutoCommit(false);
  881. //查询三期成品库sqlID
  882. String sqlIDSelect = "UIJ030060_xg3qtbl.SELECT";
  883. //插入优特主数据
  884. boolean isSuccess = insertYoute(params, conn, connLocal, sqlIDSelect, "中间库");
  885. if (!isSuccess) {
  886. conn.rollback();
  887. logger.error("保存数据中间库时,优特主数据插入失败");
  888. return;
  889. }
  890. //查询成品库炉号sqlID
  891. String sqlIDxg3qSelectCHG = "UIJ030060_xg3qTblCHG.select";
  892. //判断炉号在优特数据库中是否存在sqlID
  893. String sqlIDyouteSelectCHG = "UIJ030060_youteCHG.select";
  894. //插入成分实绩
  895. isSuccess = insertCHEM(params, conn, connLocal, sqlIDxg3qSelectCHG, sqlIDyouteSelectCHG, "中间库");
  896. if (!isSuccess) {
  897. conn.rollback();
  898. logger.error("保存数据中间库时,优特成分实绩数据插入失败");
  899. return;
  900. }
  901. //查询中间库式样号sqlID
  902. String sqlIDxg3qSelectSMP = "UIJ030060_xg3qTblSMP.select";
  903. //判断式样号在优特数据库中是否存在sqlID
  904. String sqlIDyouteSelectSMP = "UIJ030060_youteSMP.select";
  905. //插入材质
  906. isSuccess = insertQLTY(params, conn, connLocal, sqlIDxg3qSelectSMP, sqlIDyouteSelectSMP, "中间库");
  907. if (!isSuccess) {
  908. conn.rollback();
  909. logger.error("保存数据到中间库时,优特材质数据插入失败");
  910. return;
  911. }
  912. conn.commit();
  913. logger.info("保存中间库优特信息成功");
  914. } catch (Exception e) {
  915. if (conn != null) {
  916. try {
  917. conn.rollback();
  918. } catch (SQLException e1) {
  919. e1.printStackTrace();
  920. logger.error(e1);
  921. }
  922. }
  923. e.printStackTrace();
  924. logger.error("保存中间库信息时,发生异常,数据保存失败");
  925. logger.error("保存中间库信息时发生异常原因:" + e);
  926. return;
  927. }finally {
  928. if(conn != null) {
  929. try {
  930. conn.close();
  931. conn = null;
  932. } catch (SQLException e) {
  933. e.printStackTrace();
  934. logger.error("关闭优特数据库连接失败");
  935. }
  936. }
  937. if(connLocal != null) {
  938. try {
  939. connLocal.close();
  940. connLocal = null;
  941. } catch (SQLException e) {
  942. e.printStackTrace();
  943. logger.error("关闭本地三期数据库连接失败");
  944. }
  945. }
  946. }
  947. }
  948. /**
  949. * 保存成品库信息
  950. * @param params
  951. */
  952. public void saveYouTeTbcData(ArrayList<String[]> params) {
  953. if(params == null || params.size() == 0) {
  954. logger.error("没有需要保存到成品库的优特数据");
  955. return;
  956. }
  957. //优特数据库连接
  958. Connection conn = null;
  959. //本地三期数据库连接
  960. Connection connLocal = null;
  961. try {
  962. //获取连接
  963. //conn = this.getDao("YtDao").getConnection();
  964. conn = this.getDao("KgDao").getConnection();
  965. connLocal = this.getDao("KgDao").getConnection();
  966. //设置事务属性
  967. conn.setAutoCommit(false);
  968. //查询三期成品库sqlID
  969. String sqlIDSelect = "UIJ030060_xg3qtbc.SELECT";
  970. //插入优特主数据
  971. boolean isSuccess = insertYoute(params, conn, connLocal, sqlIDSelect, "成品库");
  972. if (!isSuccess) {
  973. conn.rollback();
  974. logger.error("保存数据成品库时,优特主数据插入失败");
  975. return;
  976. }
  977. //查询成品库炉号sqlID
  978. String sqlIDxg3qSelectCHG = "UIJ030060_xg3qTbcCHG.select";
  979. //判断炉号在优特数据库中是否存在sqlID
  980. String sqlIDyouteSelectCHG = "UIJ030060_youteCHG.select";
  981. //插入成分实绩
  982. isSuccess = insertCHEM(params, conn, connLocal, sqlIDxg3qSelectCHG, sqlIDyouteSelectCHG, "成品库");
  983. if (!isSuccess) {
  984. conn.rollback();
  985. logger.error("保存数据成品库时,优特成分实绩数据插入失败");
  986. return;
  987. }
  988. //查询成品库式样号sqlID
  989. String sqlIDxg3qSelectSMP = "UIJ030060_xg3qTbcSMP.select";
  990. //判断式样号在优特数据库中是否存在sqlID
  991. String sqlIDyouteSelectSMP = "UIJ030060_youteSMP.select";
  992. //插入材质
  993. isSuccess = insertQLTY(params, conn, connLocal, sqlIDxg3qSelectSMP, sqlIDyouteSelectSMP, "成品库");
  994. if (!isSuccess) {
  995. conn.rollback();
  996. logger.error("保存数据成品库时,优特材质数据插入失败");
  997. return;
  998. }
  999. conn.commit();
  1000. logger.info("保存成品库信息成功");
  1001. } catch (Exception e) {
  1002. if (conn != null) {
  1003. try {
  1004. conn.rollback();
  1005. } catch (SQLException e1) {
  1006. e1.printStackTrace();
  1007. logger.error(e1);
  1008. }
  1009. }
  1010. e.printStackTrace();
  1011. logger.error("保存成品库信息时,数据库连接发生异常,数据保存失败");
  1012. logger.error("保存成品库信息时发生异常原因:" + e);
  1013. return;
  1014. }finally {
  1015. if(conn != null) {
  1016. try {
  1017. conn.close();
  1018. conn = null;
  1019. } catch (SQLException e) {
  1020. e.printStackTrace();
  1021. logger.error("关闭优特数据库连接失败");
  1022. }
  1023. }
  1024. if(connLocal != null) {
  1025. try {
  1026. connLocal.close();
  1027. connLocal = null;
  1028. } catch (SQLException e) {
  1029. e.printStackTrace();
  1030. logger.error("关闭本地三期数据库连接失败");
  1031. }
  1032. }
  1033. }
  1034. }
  1035. }