5d83540d5431e7bc67d854175bcf541107e6d911.svn-base 26 KB

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