883e9bd01f69d6864c9c998d53e4d83b07d4ed26.svn-base 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738
  1. package UIJ.UIJ06;
  2. import java.sql.CallableStatement;
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.util.ArrayList;
  8. import java.util.Map;
  9. import UIB.COM.XmlSqlParsersFactory;
  10. import CoreFS.SA01.CoreIComponent;
  11. import CoreFS.SA06.CoreReturnObject;
  12. /**
  13. * 发运计划查询
  14. *
  15. * @author zsx
  16. * @date 2017-08-04
  17. */
  18. public class UIJ060010 extends CoreIComponent {
  19. /**
  20. * 查询运输单位
  21. *
  22. * @return CoreReturnObject
  23. * @throws SQLException
  24. */
  25. public CoreReturnObject queryTransUnits() throws SQLException {
  26. CoreReturnObject cro = new CoreReturnObject();
  27. String sql = XmlSqlParsersFactory.getSql("UIJ060010_01.SELECT");
  28. ArrayList list = (ArrayList) this.getDao("KgDao")
  29. .ExcuteQueryReturnList(sql, new Object[] {});
  30. cro.setResult(list);
  31. return cro;
  32. }
  33. /**
  34. * 查询发运计划下钢卷详细信息
  35. *
  36. * @param dlivDirNo
  37. * @return
  38. * @throws SQLException
  39. */
  40. public CoreReturnObject queryTransCoils(String dlivDirNo)
  41. throws SQLException {
  42. CoreReturnObject cro = new CoreReturnObject();
  43. String sql = XmlSqlParsersFactory.getSql("UIJ060010_05.SELECT");
  44. ArrayList list = (ArrayList) this.getDao("KgDao")
  45. .ExcuteQueryReturnList(sql, new Object[] { dlivDirNo });
  46. cro.setResult(list);
  47. return cro;
  48. }
  49. /**
  50. * 查询排车计划
  51. *
  52. * @param shipProgCd
  53. * 发货指示状态
  54. * @param fromDate
  55. * 查询开始时间
  56. * @param toDate
  57. * 查询结束时间
  58. * @param shipDirNo
  59. * 发货指示号
  60. * @param curProgCd
  61. * 物料进度
  62. * @param shipCompNm
  63. * 运输单位
  64. * @param dlivTp
  65. * 运输方式
  66. * @param laneTp
  67. * 火车入库道次
  68. * @param enteranceSeq
  69. * 装车次数
  70. * @return
  71. * @throws SQLException
  72. */
  73. public CoreReturnObject queryTransPlan(String shipProgCd, String fromDate,
  74. String toDate, String shipDirNo, String curProgCd,
  75. String shipCompNm, String dlivTp, String laneTp, String enteranceSeq)
  76. throws SQLException {
  77. CoreReturnObject cro = new CoreReturnObject();
  78. String sql = XmlSqlParsersFactory.getSql("UIJ060010_02.SELECT");
  79. cro = this.getDao("KgDao").ExcuteQuery(
  80. sql,
  81. new Object[] { shipProgCd, fromDate, toDate, shipDirNo,
  82. curProgCd, fromDate, toDate, dlivTp, laneTp,
  83. enteranceSeq, shipCompNm, dlivTp, });
  84. return cro;
  85. }
  86. /**
  87. * 查询待装车钢卷
  88. *
  89. * @param dlivTp
  90. * @return
  91. */
  92. public CoreReturnObject queryShipDir(String dlivTp) throws SQLException {
  93. CoreReturnObject cro = new CoreReturnObject();
  94. String sql = XmlSqlParsersFactory.getSql("UIJ060010_03.SELECT");
  95. cro = this.getDao("KgDao").ExcuteQuery(sql, new Object[] { dlivTp });
  96. return cro;
  97. }
  98. /**
  99. * 查询下达排车计划时排车计划对应的钢卷信息
  100. *
  101. * @param dlivNo
  102. * @return
  103. */
  104. public CoreReturnObject queryPlanCoil(String dlivNo) throws SQLException {
  105. CoreReturnObject cro = new CoreReturnObject();
  106. String sql = XmlSqlParsersFactory.getSql("UIJ060010_04.SELECT");
  107. cro = this.getDao("KgDao").ExcuteQuery(sql, new Object[] { dlivNo });
  108. return cro;
  109. }
  110. /**
  111. * 待装车取消
  112. *
  113. * @param list
  114. * @return
  115. * @throws SQLException
  116. */
  117. public CoreReturnObject returnSHIPDIRCAR(ArrayList<String[]> list)
  118. throws SQLException {
  119. CoreReturnObject cro = new CoreReturnObject();
  120. Map result = this.getDao("KgDao").CoreBeginTranscation();
  121. try {
  122. String[] param = null;
  123. for (int i = 0; i < list.size(); i++) {
  124. param = (String[]) list.get(i);
  125. // 取消放入运输表的车厢号和排车顺序号,不能改变运输表的状态
  126. String sql = XmlSqlParsersFactory.getSql("UIJ060010_01.UPDATE");
  127. this.getDao("KgDao").ExcuteNonQuery(sql,
  128. new Object[] { param[0] });
  129. // 取消钢卷公共表中的车辆号,排车顺序号
  130. sql = XmlSqlParsersFactory.getSql("UIJ060010_02.UPDATE");
  131. this.getDao("KgDao").ExcuteNonQuery(sql,
  132. new Object[] { param[0] });
  133. // 更新发货表状态标志
  134. sql = XmlSqlParsersFactory.getSql("UIJ060010_03.UPDATE");
  135. this.getDao("KgDao").ExcuteNonQuery(sql,
  136. new Object[] { param[1] });
  137. }
  138. this.getDao("KgDao").CoreCommit(result);
  139. } catch (Exception ex) {
  140. this.getDao("KgDao").CoreRollBack(result);
  141. cro.setV_errCode(-1);
  142. cro.setV_errMsg("取消待装车失败!");
  143. }
  144. return cro;
  145. }
  146. /**
  147. * 汽车排车及装车指示,运送指示状态不由下车改变,下车只读运送指示表。发货指示状态由3改为4,不改变物料进度状态'SFB'(运送待机)
  148. * 这里需要判断同一发货指示下的运输指示是否全部发完,没有发完的情况下是不能改变发货指示状态的。
  149. *
  150. * @param list
  151. * @return
  152. * @throws SQLException
  153. */
  154. public CoreReturnObject saveSHIPDIRCAR(ArrayList<String[]> list)
  155. throws SQLException {
  156. CoreReturnObject cro = new CoreReturnObject();
  157. StringBuffer sqlBuffer = null;
  158. Map result = this.getDao("KgDao").CoreBeginTranscation();
  159. try {
  160. for (int i = 0; i < list.size(); i++) {
  161. // 判断是否全部选择的标志位
  162. boolean flag = true;
  163. String[] param = list.get(i);
  164. // 查询钢卷公共表中的SHIP_PROG_CD状态
  165. sqlBuffer = new StringBuffer();
  166. sqlBuffer
  167. .append("select a.SHIP_PROG_CD from C_TBL02_COIL_COMM a where a.ship_dirno = '"
  168. + param[3] + "'\n");
  169. ArrayList shipList = (ArrayList) this.getDao("KgDao")
  170. .ExcuteQueryReturnList(sqlBuffer.toString(),
  171. new String[] {});
  172. for (int j = 0; j < shipList.size(); j++) {
  173. Map map = (Map) shipList.get(j);
  174. String shipProgCd = map.get("SHIP_PROG_CD").toString();
  175. if (!"03".equals(shipProgCd)) {
  176. flag = false;
  177. cro.setV_errCode(-1);
  178. cro.setV_errMsg("请检查:指示号" + param[2]
  179. + "下相应钢卷信息,再做操作!!!!!");
  180. break;
  181. }
  182. }
  183. if (flag) {
  184. // 把车厢号和排车顺序号放入运输表,不改变运输表的状态
  185. sqlBuffer = new StringBuffer();
  186. sqlBuffer.append(" update tbj01_dliv_dir\n");
  187. sqlBuffer.append(" set \n");
  188. sqlBuffer.append(" ALLOC_SEQ = ?,\n");
  189. sqlBuffer.append(" TRANS_CAR_NO = ? \n");
  190. sqlBuffer.append(" where DLIV_DIRNO = ?\n");
  191. this.getDao("KgDao").ExcuteNonQuery(sqlBuffer.toString(),
  192. new Object[] { param[0], param[1], param[2] });
  193. // 更新钢卷公共表中的车辆号,排车顺序号
  194. sqlBuffer = new StringBuffer();
  195. sqlBuffer.append(" update C_TBL02_COIL_COMM\n");
  196. sqlBuffer.append(" set \n");
  197. sqlBuffer.append(" TRAIN_STEP_NO = ?,\n");
  198. sqlBuffer.append(" TRANS_CAR_NO = ?,\n");
  199. sqlBuffer.append(" SHIP_PROG_CD = '04'\n");
  200. sqlBuffer.append(" where DLIV_DIRNO =?\n");
  201. this.getDao("KgDao").ExcuteNonQuery(sqlBuffer.toString(),
  202. new Object[] { param[0], param[1], param[2] });
  203. // 更新发货表发货状态
  204. sqlBuffer = new StringBuffer();
  205. sqlBuffer.append(" update tbj01_ship_dir\n");
  206. sqlBuffer.append(" set \n");
  207. sqlBuffer.append(" ship_prog_cd = '04' \n");
  208. sqlBuffer.append(" where ship_dirno =?\n");
  209. this.getDao("KgDao").ExcuteNonQuery(sqlBuffer.toString(),
  210. new Object[] { param[3] });
  211. }
  212. }
  213. this.getDao("KgDao").CoreCommit(result);
  214. } catch (Exception ex) {
  215. this.getDao("KgDao").CoreRollBack(result);
  216. cro.setV_errCode(-1);
  217. cro.setV_errMsg("汽车排车失败!");
  218. }
  219. return cro;
  220. }
  221. public CoreReturnObject reportslab(String regId,ArrayList<String[]> list)
  222. throws SQLException {
  223. CoreReturnObject cro = new CoreReturnObject();
  224. StringBuffer sqlBuffer = null;
  225. Map result = this.getDao("KgDao").CoreBeginTranscation();
  226. try {
  227. for (int i = 0; i < list.size(); i++) {
  228. // 判断是否全部选择的标志位
  229. boolean flag = true;
  230. String[] param = list.get(i);
  231. // 查询钢卷公共表中的SHIP_PROG_CD状态
  232. sqlBuffer = new StringBuffer();
  233. sqlBuffer
  234. .append("select nvl(REPORT_TIME,'1') REPORT_TIME from TBG02_SLAB_COMM a where a.SLAB_NO= '"
  235. + param[0] + "'\n");
  236. ArrayList shipList = (ArrayList) this.getDao("KgDao")
  237. .ExcuteQueryReturnList(sqlBuffer.toString(),
  238. new String[] {});
  239. for (int j = 0; j < shipList.size(); j++) {
  240. Map map = (Map) shipList.get(j);
  241. String shipProgCd = map.get("REPORT_TIME").toString();
  242. if (!"1".equals(shipProgCd)) {
  243. flag = false;
  244. cro.setV_errCode(-1);
  245. cro.setV_errMsg("板坯" + param[0]
  246. + "已做申报,无法再次申报!");
  247. break;
  248. }
  249. }
  250. if (flag) {
  251. // 把车厢号和排车顺序号放入运输表,不改变运输表的状态
  252. sqlBuffer = new StringBuffer();
  253. sqlBuffer.append(" update TBG02_SLAB_COMM\n");
  254. sqlBuffer.append(" set \n");
  255. sqlBuffer.append(" REPORT_TIME = ?,REPORT_MAN=?,REPORT_GROUP=?,REPORT_REGTIME=to_char(sysdate,'yyyymmddhh24miss')\n");
  256. sqlBuffer.append(" where SLAB_NO = ?\n");
  257. this.getDao("KgDao").ExcuteNonQuery(sqlBuffer.toString(),
  258. new Object[] { param[1],regId,param[2],param[0] });
  259. }
  260. }
  261. this.getDao("KgDao").CoreCommit(result);
  262. } catch (Exception ex) {
  263. this.getDao("KgDao").CoreRollBack(result);
  264. cro.setV_errCode(-1);
  265. cro.setV_errMsg("申报失败!");
  266. }
  267. return cro;
  268. }
  269. public CoreReturnObject cancelreportslab(String regId,ArrayList<String[]> list)
  270. throws SQLException {
  271. CoreReturnObject cro = new CoreReturnObject();
  272. StringBuffer sqlBuffer = null;
  273. Map result = this.getDao("KgDao").CoreBeginTranscation();
  274. try {
  275. for (int i = 0; i < list.size(); i++) {
  276. // 判断是否全部选择的标志位
  277. boolean flag = true;
  278. String[] param = list.get(i);
  279. if (flag) {
  280. // 把车厢号和排车顺序号放入运输表,不改变运输表的状态
  281. sqlBuffer = new StringBuffer();
  282. sqlBuffer.append(" update TBG02_SLAB_COMM\n");
  283. sqlBuffer.append(" set \n");
  284. sqlBuffer.append(" REPORT_TIME = ''\n");
  285. sqlBuffer.append(" where SLAB_NO = ?\n");
  286. this.getDao("KgDao").ExcuteNonQuery(sqlBuffer.toString(),
  287. new Object[] { param[0] });
  288. }
  289. }
  290. this.getDao("KgDao").CoreCommit(result);
  291. } catch (Exception ex) {
  292. this.getDao("KgDao").CoreRollBack(result);
  293. cro.setV_errCode(-1);
  294. cro.setV_errMsg("取消申报失败!");
  295. }
  296. return cro;
  297. }
  298. /** 20131107
  299. * 火车排车及装车指示,运送指示状态不由下车改变,下车只读运送指示表。发货指示状态由3改为4,不改变物料进度状态'SFB'(运送待机)
  300. * 这里需要判断同一发货指示下的运输指示是否全部发完,没有发完的情况下是不能改变发货指示状态的。
  301. *
  302. * @param list
  303. * @return
  304. * @throws SQLException
  305. */
  306. public CoreReturnObject saveSHIPTrain(ArrayList<String[]> list)
  307. throws SQLException {
  308. CoreReturnObject cro = new CoreReturnObject();
  309. StringBuffer sqlBuffer = null;
  310. Map result = this.getDao("KgDao").CoreBeginTranscation();
  311. try {
  312. for (int i = 0; i < list.size(); i++) {
  313. // 判断是否全部选择的标志位
  314. boolean flag = true;
  315. String[] param = list.get(i);
  316. // 查询钢卷公共表中的SHIP_PROG_CD状态
  317. sqlBuffer = new StringBuffer();
  318. sqlBuffer.append("SELECT A.SHIP_PROG_CD FROM C_TBL02_COIL_COMM A WHERE A.SHIP_DIRNO = '"
  319. + param[5] + "'\n");
  320. ArrayList shipList = (ArrayList) this.getDao("KgDao")
  321. .ExcuteQueryReturnList(sqlBuffer.toString(),
  322. new String[] {});
  323. for (int j = 0; j < shipList.size(); j++) {
  324. Map map = (Map) shipList.get(j);
  325. String shipProgCd = map.get("SHIP_PROG_CD").toString();
  326. if (!"03".equals(shipProgCd)) {
  327. flag = false;
  328. cro.setV_errCode(-1);
  329. cro.setV_errMsg("请检查:指示号" + param[4]
  330. + "下相应钢卷信息,再做操作!!!!!");
  331. break;
  332. }
  333. }
  334. if (flag) {
  335. // 把车厢号和排车顺序号放入运输表,不改变运输表的状态
  336. sqlBuffer = new StringBuffer();
  337. sqlBuffer.append(" UPDATE TBJ01_DLIV_DIR\n");
  338. sqlBuffer.append(" SET \n");
  339. sqlBuffer.append(" ALLOC_SEQ = ?,\n");
  340. sqlBuffer.append(" TRANS_CAR_NO = ? ,\n");
  341. sqlBuffer.append(" LANE_TP = ?,\n");
  342. sqlBuffer.append(" ENTERANCE_SEQ = ?\n");
  343. sqlBuffer.append(" WHERE DLIV_DIRNO = ?\n");
  344. this.getDao("KgDao").ExcuteNonQuery(sqlBuffer.toString(),
  345. new Object[] { param[0], param[1], param[2] ,param[3],param[4]});
  346. // 更新钢卷公共表中的车辆号,排车顺序号
  347. sqlBuffer = new StringBuffer();
  348. sqlBuffer.append(" UPDATE C_TBL02_COIL_COMM\n");
  349. sqlBuffer.append(" SET \n");
  350. sqlBuffer.append(" TRAIN_STEP_NO = ?,\n");
  351. sqlBuffer.append(" TRANS_CAR_NO = ?,\n");
  352. sqlBuffer.append(" SHIP_PROG_CD = '04'\n");
  353. sqlBuffer.append(" WHERE DLIV_DIRNO =?\n");
  354. this.getDao("KgDao").ExcuteNonQuery(sqlBuffer.toString(),
  355. new Object[] { param[0], param[1], param[4] });
  356. // 更新发货表发货状态
  357. sqlBuffer = new StringBuffer();
  358. sqlBuffer.append(" UPDATE TBJ01_SHIP_DIR \n");
  359. sqlBuffer.append(" SET \n");
  360. sqlBuffer.append(" SHIP_PROG_CD = '04' \n");
  361. sqlBuffer.append(" WHERE SHIP_DIRNO=?\n");
  362. this.getDao("KgDao").ExcuteNonQuery(sqlBuffer.toString(),
  363. new Object[] { param[5] });
  364. }
  365. }
  366. this.getDao("KgDao").CoreCommit(result);
  367. } catch (Exception ex) {
  368. this.getDao("KgDao").CoreRollBack(result);
  369. cro.setV_errCode(-1);
  370. cro.setV_errMsg("火车排车失败!");
  371. }
  372. return cro;
  373. }
  374. /**
  375. * 确认排车操作
  376. *
  377. * @param regId
  378. * @param list
  379. * @return
  380. * @throws SQLException
  381. */
  382. public CoreReturnObject saveDLIVDIRCAR(String regId, String regOrder,
  383. String regGroup, ArrayList<String[]> list) throws SQLException {
  384. CoreReturnObject cro = new CoreReturnObject();
  385. Connection conn = null;
  386. PreparedStatement pSta = null;
  387. ResultSet rs = null;
  388. String[] param = null;
  389. ArrayList<String> dlivDirNoList = new ArrayList<String>();
  390. String sql = "";
  391. try {
  392. conn = this.getDao("KgDao").getConnection();
  393. conn.setAutoCommit(false);
  394. // 根据运输指示号的个数来生成发货清单号
  395. for (int i = 0; i < list.size(); i++) {
  396. param = list.get(i);
  397. boolean flag = false;// 运输号是否重复标识
  398. for (int j = 0; j < dlivDirNoList.size(); j++) {
  399. if (param[2].equals(dlivDirNoList.get(j))) {
  400. flag = true;
  401. break;
  402. }
  403. }
  404. dlivDirNoList.add(param[2]);
  405. // 生成发货清单号
  406. if (!flag) {
  407. sql = XmlSqlParsersFactory.getSql("UIJ060010_04.UPDATE");
  408. pSta = conn.prepareStatement(sql);
  409. pSta.setString(1, param[2]);
  410. pSta.executeUpdate();
  411. pSta.close();
  412. }
  413. // 将发货清单号更新到钢卷公共表
  414. sql = "SELECT A.INV_NO FROM TBJ01_DLIV_DIR A WHERE A.DLIV_DIRNO = '"
  415. + param[2] + "'";
  416. pSta = conn.prepareStatement(sql);
  417. rs = pSta.executeQuery();
  418. if (rs.next()) {
  419. String invNo = rs.getString("INV_NO");
  420. sql = XmlSqlParsersFactory.getSql("UIJ060010_05.UPDATE");
  421. pSta = conn.prepareStatement(sql);
  422. pSta.setString(1, invNo);
  423. pSta.setString(2, param[2]);
  424. pSta.executeUpdate();
  425. pSta.close();
  426. }
  427. // 20131011
  428. rs.close();
  429. // 插入移垛记录
  430. StringBuffer sqlBuffer = new StringBuffer();
  431. sqlBuffer.append("INSERT INTO C_TBK08_COIL_MOVE (ROLL_SEQ\n");
  432. sqlBuffer
  433. .append(",CUR_LOAD_LOC_F,CUR_LOAD_LOC_T,COIL_NO,REG_ID\n");
  434. sqlBuffer
  435. .append(",REG_SHIFT,REG_GROUP,REG_DTIME,REG_USE_DTIME,MOVE_TYPE)\n");
  436. sqlBuffer
  437. .append("VALUES((SELECT MAX(ROLL_SEQ)+1 ROLL_SEQ FROM C_TBK08_COIL_MOVE)\n");
  438. sqlBuffer
  439. .append(",?,?,?,?,?,?,TO_CHAR(SYSDATE,'YYYYMMDD'),TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'),'12')\n");
  440. PreparedStatement pStaI = conn.prepareStatement(sqlBuffer
  441. .toString());
  442. pStaI.setString(1, param[7]);// 垛位
  443. pStaI.setString(2, "");
  444. pStaI.setString(3, param[4]);// 钢卷号
  445. pStaI.setString(4, regId);
  446. pStaI.setString(5, regOrder);
  447. pStaI.setString(6, regGroup);
  448. pStaI.executeUpdate();
  449. pStaI.close();
  450. // 根据钢卷号更新车厢号和排车顺序
  451. sql = XmlSqlParsersFactory.getSql("UIJ060010_06.UPDATE");
  452. pSta = conn.prepareStatement(sql);
  453. pSta.setString(1, param[1]);
  454. pSta.setString(2, param[0]);
  455. pSta.setString(3, param[2]);
  456. pSta.setString(4, param[3]);
  457. pSta.setString(5, param[6]);
  458. pSta.setString(6, param[5]);
  459. pSta.executeUpdate();
  460. pSta.close();
  461. // 清除垛位表钢卷信息
  462. sql = XmlSqlParsersFactory.getSql("UIJ060010_07.UPDATE");
  463. pSta = conn.prepareStatement(sql);
  464. pSta.setString(1, param[5]);
  465. pSta.executeUpdate();
  466. pSta.close();
  467. flag = true;
  468. // 查询钢卷发运状态
  469. sql = "select a.SHIP_PROG_CD from C_TBL02_COIL_COMM a where a.ship_dirno = '"
  470. + param[3] + "'";
  471. pSta = conn.prepareStatement(sql);
  472. rs = pSta.executeQuery();
  473. while (rs.next()) {
  474. String tmpShipProgCd = rs.getString("SHIP_PROG_CD");
  475. if ("03".equals(tmpShipProgCd)
  476. || "04".equals(tmpShipProgCd)) {
  477. flag = false;
  478. break;
  479. }
  480. }
  481. rs.close();
  482. pSta.close();
  483. if (flag) {
  484. // 更新发运表发运状态
  485. sql = XmlSqlParsersFactory.getSql("UIJ060010_08.UPDATE");
  486. pSta = conn.prepareStatement(sql);
  487. pSta.setString(1, param[3]);
  488. pSta.executeUpdate();
  489. pSta.close();
  490. if ("YY".equals(createCretNo(conn, param[3]))) {
  491. sql = "select coil_no,ord_no,ord_seq,bef_prog_cd,cur_prog_Cd,act_wgt from c_tbl02_coil_comm where dliv_dirno ='"
  492. + param[2] + "'";
  493. pSta = conn.prepareStatement(sql);
  494. rs = pSta.executeQuery();
  495. while (rs.next()) {
  496. String coilNo = rs.getString("COIL_NO");
  497. String ordNo = rs.getString("ORD_NO");
  498. String ordSeq = rs.getString("ORD_SEQ");
  499. String befProgCd = rs.getString("BEF_PROG_CD");
  500. String curProgCd = rs.getString("CUR_PROG_CD");
  501. String actWgt = rs.getString("ACT_WGT");
  502. SAVE_ORD_STS("", "", ordNo, ordSeq, befProgCd,
  503. curProgCd, "CR", coilNo, actWgt,
  504. "UIJ060010", regId);
  505. }
  506. // 20131011
  507. rs.close();
  508. pSta.close();
  509. ORD_STS_MAIN("UIJ060010", regId);
  510. } else {
  511. // 回滚
  512. conn.rollback();
  513. // 这里出现的异常情况是板坯号与钢卷号不匹配
  514. cro.setV_errCode(-2);
  515. cro.setV_errMsg("开具质保书失败,请联系管理员!");
  516. }
  517. }
  518. }
  519. conn.commit();
  520. } catch (Exception ex) {
  521. if (conn != null) {
  522. conn.rollback();
  523. }
  524. cro.setV_errCode(-1);
  525. cro.setV_errMsg("排车确认失败!");
  526. } finally {
  527. try{
  528. //添加了出现异常时最终关闭rs、pSta
  529. if (rs != null) {
  530. rs.close();
  531. }
  532. if (pSta != null) {
  533. pSta.close();
  534. }
  535. if (conn != null && !conn.isClosed()) {
  536. conn.close();
  537. }
  538. } catch (Exception e) {
  539. }
  540. }
  541. return cro;
  542. }
  543. /**
  544. * 订单进程标记
  545. *
  546. * @param P_BEF_ORD_NO
  547. * 前合同号
  548. * @param P_BEF_ORD_SEQ
  549. * 前订单号
  550. * @param P_ORD_NO
  551. * 合同号
  552. * @param P_ORD_SEQ
  553. * 订单号
  554. * @param P_BEF_PROG_CD
  555. * 前进程状态
  556. * @param P_PROG_CD
  557. * 进程状态
  558. * @param P_MAT_TYPE
  559. * 物料类型
  560. * @param P_MAT_NO
  561. * 物料号
  562. * @param P_WGT
  563. * 物料重量
  564. * @param P_REG_PRGM
  565. * 程序名
  566. * @param P_REG_ID
  567. * 操作人
  568. * @return
  569. */
  570. private void SAVE_ORD_STS(String P_BEF_ORD_NO, String P_BEF_ORD_SEQ,
  571. String P_ORD_NO, String P_ORD_SEQ, String P_BEF_PROG_CD,
  572. String P_PROG_CD, String P_MAT_TYPE, String P_MAT_NO, String P_WGT,
  573. String P_REG_PRGM, String P_REG_ID) throws SQLException {
  574. this.getDao("KgDao").ExcuteProcedure(
  575. XmlSqlParsersFactory.getSql("UIJ060010_03.CALL"),
  576. new String[] { P_BEF_ORD_NO, P_BEF_ORD_SEQ, P_ORD_NO,
  577. P_ORD_SEQ, P_BEF_PROG_CD, P_PROG_CD, P_MAT_TYPE,
  578. P_MAT_NO, P_WGT, P_REG_PRGM, P_REG_ID }, new String[0]);
  579. }
  580. /**
  581. * 订单进程整理 regId 操作人
  582. *
  583. * @return
  584. */
  585. private boolean ORD_STS_MAIN(String pgmId, String regId)
  586. throws SQLException {
  587. boolean flag = true;
  588. String retMsg = "";
  589. this.getDao("KgDao").ExcuteProcedure(
  590. XmlSqlParsersFactory.getSql("UIJ060010_02.CALL"),
  591. new String[] { pgmId, regId }, new String[] { retMsg });
  592. if (retMsg != null && !retMsg.equals("")) {
  593. flag = false;
  594. }
  595. return flag;
  596. }
  597. /**
  598. * 生成质保书号
  599. *
  600. * @param shipDlivNo
  601. * @return
  602. * @throws SQLException
  603. */
  604. private String createCretNo(Connection conn, String shipDlivNo)
  605. throws SQLException {
  606. String retMsg = "";
  607. String sql = XmlSqlParsersFactory.getSql("UIJ060010_01.CALL");
  608. CallableStatement cstm = conn.prepareCall(sql);
  609. cstm.setString(1, shipDlivNo);
  610. cstm.registerOutParameter(2, java.sql.Types.VARCHAR);
  611. cstm.registerOutParameter(3, java.sql.Types.VARCHAR);
  612. cstm.execute();
  613. String cretNo = cstm.getString(2);
  614. retMsg = cstm.getString(3);
  615. cstm.close();
  616. return retMsg;
  617. }
  618. /**
  619. * 查询同订单下可发钢卷
  620. *
  621. * @param ordNo
  622. * @param ordSeq
  623. * @param coilNo
  624. * @param thkMin
  625. * @param thkMax
  626. * @param wthMin
  627. * @param wthMax
  628. * @return
  629. * @throws SQLException
  630. */
  631. public CoreReturnObject querySameCoils(String ordNo, String ordSeq,
  632. String coilNo, String thkMin, String thkMax, String wthMin,
  633. String wthMax) throws SQLException {
  634. CoreReturnObject cro = new CoreReturnObject();
  635. String sql = XmlSqlParsersFactory.getSql("UIJ060010_06.SELECT");
  636. cro = this.getDao("KgDao").ExcuteQuery(
  637. sql,
  638. new Object[] { ordNo, ordSeq, coilNo, thkMin, thkMax, wthMin,
  639. wthMax });
  640. return cro;
  641. }
  642. /**
  643. * 钢卷替换
  644. *
  645. * @param oldCoils
  646. * @param newCoils
  647. * @return
  648. * @throws SQLException
  649. */
  650. public CoreReturnObject replaceCoils(ArrayList oldCoils, ArrayList newCoils)
  651. throws SQLException {
  652. CoreReturnObject cro = new CoreReturnObject();
  653. Map result = this.getDao("KgDao").CoreBeginTranscation();
  654. try {
  655. // 将替换的钢卷加入发运计划
  656. String sql = XmlSqlParsersFactory.getSql("UIJ060010_09.UPDATE");
  657. Object[] params = new Object[] { toSqlStr(oldCoils),
  658. toSqlStr(oldCoils), toSqlStr(oldCoils), toSqlStr(oldCoils),
  659. toSqlStr(oldCoils), toSqlStr(oldCoils), toSqlStr(oldCoils),
  660. toSqlStr(newCoils) };
  661. int i = 0;
  662. while (sql.indexOf("?") >= 0 && i < params.length) {
  663. sql = replaceFirst(sql, "?", params[i++].toString());
  664. }
  665. this.getDao("KgDao").ExcuteNonQuery(sql);
  666. // 将需要替换的钢卷取消发运计划
  667. sql = XmlSqlParsersFactory.getSql("UIJ060010_10.UPDATE");
  668. params = new Object[] { toSqlStr(oldCoils) };
  669. i = 0;
  670. while (sql.indexOf("?") >= 0 && i < params.length) {
  671. sql = replaceFirst(sql, "?", params[i++].toString());
  672. }
  673. this.getDao("KgDao").ExcuteNonQuery(sql);
  674. this.getDao("KgDao").CoreCommit(result);
  675. } catch (Exception ex) {
  676. this.getDao("KgDao").CoreRollBack(result);
  677. cro.setV_errCode(-1);
  678. cro.setV_errMsg("钢卷替换失败!");
  679. }
  680. return cro;
  681. }
  682. private String toSqlStr(ArrayList coils) {
  683. String sqlStr = "";
  684. for (int i = 0; i < coils.size(); i++) {
  685. sqlStr = "'" + coils.get(i) + "',";
  686. }
  687. sqlStr += "''";
  688. return sqlStr;
  689. }
  690. static public String replaceFirst(String str, String oldStr, String newStr) {
  691. int i = str.indexOf(oldStr);
  692. if (i == -1)
  693. return str;
  694. str = str.substring(0, i) + newStr + str.substring(i + oldStr.length());
  695. return str;
  696. }
  697. }