8a5d285e905769095b7e7bfc033fdf8397d3e467.svn-base 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533
  1. package xin.glue.ui.H.H05;
  2. import java.math.BigDecimal;
  3. import java.sql.CallableStatement;
  4. import java.sql.SQLException;
  5. import java.text.DateFormat;
  6. import java.text.DecimalFormat;
  7. import java.text.SimpleDateFormat;
  8. import java.util.Date;
  9. import xin.glue.ui.common.PosGridSave;
  10. import xin.glue.ui.common.component.PosSiteLog;
  11. import com.posdata.glue.biz.activity.PosActivity;
  12. import com.posdata.glue.biz.constants.PosBizControlConstants;
  13. import com.posdata.glue.context.PosContext;
  14. import com.posdata.glue.dao.vo.PosParameter;
  15. import com.posdata.glue.dao.vo.PosRow;
  16. import com.posdata.glue.dao.vo.PosRowSet;
  17. /*
  18. * 这里做钢卷的盘入盘出操作。必须设置权限
  19. * @author TangLiang 唐亮
  20. * @data 2009.07.11
  21. */
  22. public class SaveCOIL_IO extends PosActivity {
  23. public String runActivity(PosContext context) {
  24. try {
  25. // 钢卷号
  26. String[] coil_no = (String[]) context.get("coil_no");
  27. // 盘出
  28. String[] COIL_OUT = (String[]) context.get("COIL_OUT");
  29. // 盘入
  30. String[] COIL_IN = (String[]) context.get("COIL_IN");
  31. //外卖盘出
  32. String[] COIL_SALE = (String[]) context.get("COIL_SALE");
  33. // 废钢盘出
  34. String[] COIL_END = (String[]) context.get("COIL_END");
  35. // 操作人
  36. String[] REG_ID = (String[]) context.get("REG_ID");
  37. // 盘入的垛位
  38. String[] CUR_LOAD_LOC = (String[]) context.get("CUR_LOAD_LOC");
  39. String coil_no_tmp = null;
  40. String OLD_SAMPL_NO = null;
  41. String CUR_LOAD_LOC_TMP = null;
  42. String OLD_SAMPL_NO_TMP = null;
  43. String CUR_PROG_CD = null;
  44. String coil_stat = null;
  45. String SHIP_PROG_CD = null;
  46. // 这里的是钢卷的状态
  47. String CUR_PROG_CD_C = null;
  48. String TRNF_DTIME = null;
  49. String slab_no = null;
  50. String ordNo = "";
  51. String ordSeq = "";
  52. String ordFl = "";
  53. // 判断是做盘入操作还是做盘出操作
  54. if (COIL_IN[0].equals("1") && "".equals(COIL_OUT[0])&&"".equals(COIL_SALE[0])&&"".equals(COIL_END[0])) {
  55. // 这里做盘入操作,首先要检查钢卷号是否存在系统。不存在的情况下给予提示
  56. PosParameter param1 = new PosParameter();
  57. param1.setWhereClauseParameter(0, coil_no[0]);
  58. PosRowSet rows = getDao("mesdao").find("UIH051600_02.select",
  59. param1);
  60. if (rows.hasNext()) {
  61. PosRow row = rows.next();
  62. OLD_SAMPL_NO = (String) row.getAttribute("OLD_SAMPL_NO");
  63. coil_no_tmp = (String) row.getAttribute("COIL_NO");
  64. slab_no = (String) row.getAttribute("SLAB_NO");
  65. coil_stat = (String) row.getAttribute("COIL_STAT");
  66. CUR_PROG_CD_C = (String) row.getAttribute("CUR_PROG_CD");
  67. TRNF_DTIME = (String) row.getAttribute("TRNF_DTIME");
  68. SHIP_PROG_CD = (String) row.getAttribute("SHIP_PROG_CD");
  69. // add by jungan 2010-12-27 插入降余材历史记录
  70. ordNo = row.getAttribute("ORD_NO") != null ? ((String) row.getAttribute("ORD_NO")).trim() : "";
  71. ordSeq = row.getAttribute("ORD_SEQ") != null ?((String) row.getAttribute("ORD_SEQ")).trim() : "";
  72. ordFl = row.getAttribute("ORD_FL") != null ? ((String) row.getAttribute("ORD_FL")).trim() : "";
  73. if (!"".equals(OLD_SAMPL_NO) && null != OLD_SAMPL_NO) {
  74. // 这里必须加入此卷是否已经正常发货的提示,正常发货的卷暂时不允许发货
  75. if (coil_stat.equals("3")
  76. && ((CUR_PROG_CD_C.equals("SFF")
  77. && TRNF_DTIME != null
  78. && SHIP_PROG_CD.equals("08")) || CUR_PROG_CD_C.equals("SGF"))) {
  79. // 抛出异常
  80. logger.logInfo("SaveCOIL_IO类中,需要盘入库的" + coil_no_tmp
  81. + "属于正常发货出库,不能进行盘入操作!");
  82. String vtemp = "FAHUO";
  83. context.put("rs", vtemp);
  84. } else {
  85. if (!"".equals(CUR_LOAD_LOC[0])
  86. && null != CUR_LOAD_LOC[0]) {
  87. // 这里还需要判断垛位上是否存在卷信息
  88. PosParameter param11 = new PosParameter();
  89. param11.setWhereClauseParameter(0,
  90. CUR_LOAD_LOC[0]);
  91. PosRowSet rows1 = getDao("mesdao").find(
  92. "UIH051600_04.select", param11);
  93. if (rows1.hasNext()) {
  94. PosRow row1 = rows1.next();
  95. CUR_LOAD_LOC_TMP = (String) row1
  96. .getAttribute("COIL_NO");
  97. if ("".equals(CUR_LOAD_LOC_TMP)
  98. || null == CUR_LOAD_LOC_TMP) {
  99. // 人工盘入库的卷,改为余材
  100. // 更新钢卷公共表
  101. PosParameter param2 = new PosParameter();
  102. param2.setWhereClauseParameter(0,
  103. CUR_LOAD_LOC[0]);
  104. param2.setWhereClauseParameter(1,
  105. REG_ID[0]);
  106. param2.setWhereClauseParameter(2,
  107. OLD_SAMPL_NO);
  108. getDao("mesdao").update(
  109. "UIH051600_01.update", param2);
  110. // add by jungan 2010-12-27 插入降余材历史记录
  111. if (ordFl.equals("1")) {
  112. CallableStatement cstm = getDao(
  113. "mesdao")
  114. .getCallableStatement(
  115. "UIH051600_01.call");
  116. cstm.setString(1, "B");
  117. cstm.setString(2, "S");
  118. cstm.setString(3, REG_ID[0]);
  119. cstm.setString(4, "UIH051600");
  120. cstm.setString(5, "");
  121. cstm.setString(6, "");
  122. cstm.setString(7, "");
  123. cstm.setString(8, OLD_SAMPL_NO);
  124. cstm.setString(9, "CR");
  125. cstm.setString(10, ordNo);
  126. cstm.setString(11, ordSeq);
  127. cstm.setString(12, "");
  128. cstm.setString(13, "");
  129. boolean res = cstm.execute();
  130. cstm.close();
  131. logger
  132. .logInfo("UIM051600 SaveCOIL_IO 盘入保存历史记录结果 : "
  133. + res);
  134. }
  135. // 更新钢卷公共_D 表
  136. PosParameter param3 = new PosParameter();
  137. param3.setWhereClauseParameter(0,
  138. coil_no_tmp);
  139. getDao("mesdao").update(
  140. "UIH051600_02.update", param3);
  141. // 把钢卷信息录入垛位表
  142. PosParameter param4 = new PosParameter();
  143. param4.setWhereClauseParameter(0,
  144. OLD_SAMPL_NO);
  145. param4
  146. .setWhereClauseParameter(
  147. 1,
  148. CUR_LOAD_LOC[0]
  149. .substring(0, 5));
  150. param4
  151. .setWhereClauseParameter(
  152. 2,
  153. CUR_LOAD_LOC[0]
  154. .substring(5, 7));
  155. param4
  156. .setWhereClauseParameter(
  157. 3,
  158. CUR_LOAD_LOC[0]
  159. .substring(7, 8));
  160. param4
  161. .setWhereClauseParameter(
  162. 4,
  163. CUR_LOAD_LOC[0]
  164. .substring(8, 9));
  165. getDao("mesdao").update(
  166. "UIH051600_03.update", param4);
  167. // 这里还需要修改板坯公共表,如果已经做了计划的板坯就不能动了
  168. PosParameter param111 = new PosParameter();
  169. param111.setWhereClauseParameter(0,
  170. slab_no);
  171. PosRowSet rows11 = getDao("mesdao")
  172. .find("UIH051600_06.select",
  173. param111);
  174. if (rows11.hasNext()) {
  175. PosRow row11 = rows11.next();
  176. CUR_PROG_CD = (String) row11
  177. .getAttribute("CUR_PROG_CD");
  178. if (CUR_PROG_CD.equals("RBB")) {
  179. // 如果此板坯已做计划,给出提示
  180. logger
  181. .logInfo("SaveCOIL_IO类中,需要盘入库的"
  182. + coil_no_tmp
  183. + "卷对应的板坯:"
  184. + slab_no
  185. + "已经做计划。请联系轧制计划员处理!!");
  186. String vtemp = "SLAB_NO";
  187. context.put("rs", vtemp);
  188. } else {
  189. PosParameter param5 = new PosParameter();
  190. param5.setWhereClauseParameter(
  191. 0, slab_no);
  192. getDao("mesdao").update(
  193. "UIH051600_06.update",
  194. param5);
  195. // 还需要清空库存垛位表
  196. PosParameter param6 = new PosParameter();
  197. param6.setWhereClauseParameter(
  198. 0, slab_no);
  199. getDao("mesdao").update(
  200. "UIH051600_07.update",
  201. param6);
  202. }
  203. }
  204. } else {
  205. // 抛出异常
  206. logger.logInfo("SaveCOIL_IO类中,需要盘入库的"
  207. + coil_no_tmp
  208. + "卷需要存放的堆位上面存在钢卷!");
  209. String vtemp = "CUR_LOAD_LOC";
  210. context.put("rs", vtemp);
  211. }
  212. } else {
  213. // 抛出异常
  214. logger.logInfo("SaveCOIL_IO类中,需要盘入库的"
  215. + coil_no_tmp + "卷需要存放的堆位上面存在钢卷!");
  216. String vtemp = "CUR_LOAD_LOC";
  217. context.put("rs", vtemp);
  218. }
  219. } else {
  220. // 抛出异常
  221. logger.logInfo("SaveCOIL_IO类中,需要盘入库的"
  222. + coil_no_tmp + "卷不存在垛位数据!");
  223. String vtemp = "CUR_LOAD_LOC_NO";
  224. context.put("rs", vtemp);
  225. }
  226. }
  227. } else {
  228. // 抛出异常
  229. logger.logInfo("SaveCOIL_IO类中,需要盘入库的" + coil_no_tmp
  230. + "不存在,请确认后再进行相应的处理!");
  231. String vtemp = "ERROR";
  232. context.put("rs", vtemp);
  233. }
  234. } else {
  235. // 抛出异常
  236. logger.logInfo("SaveCOIL_IO类中,需要盘入库的" + coil_no_tmp
  237. + "不存在,请确认后再进行相应的处理!");
  238. String vtemp = "ERROR";
  239. context.put("rs", vtemp);
  240. }
  241. } else if (COIL_OUT[0].equals("2") && "".equals(COIL_IN[0])&& "".equals(COIL_SALE[0])&& "".equals(COIL_END[0])) {
  242. PosParameter param1 = new PosParameter();
  243. param1.setWhereClauseParameter(0, coil_no[0]);
  244. PosRowSet rows = getDao("mesdao").find("UIH051600_03.select",
  245. param1);
  246. if (rows.hasNext()) {
  247. PosRow row = rows.next();
  248. OLD_SAMPL_NO = (String) row.getAttribute("OLD_SAMPL_NO");
  249. coil_no_tmp = (String) row.getAttribute("COIL_NO");
  250. CUR_PROG_CD = (String) row.getAttribute("CUR_PROG_CD");
  251. // add by jungan 2010-12-27 插入降余材历史记录
  252. ordNo = row.getAttribute("ORD_NO") != null ? ((String) row.getAttribute("ORD_NO")).trim() : "";
  253. ordSeq = row.getAttribute("ORD_SEQ") != null ?((String) row.getAttribute("ORD_SEQ")).trim() : "";
  254. ordFl = row.getAttribute("ORD_FL") != null ? ((String) row.getAttribute("ORD_FL")).trim() : "";
  255. if (!"".equals(OLD_SAMPL_NO) && null != OLD_SAMPL_NO) {
  256. if (CUR_PROG_CD.equals("SFB")) {
  257. // 抛出异常
  258. logger.logInfo("SaveCOIL_IO类中,需要盘出库的" + coil_no_tmp
  259. + "已经做了下车计划,请确认后再进行相应的处理!");
  260. String vtemp = "CUR_PROG_CD";
  261. context.put("rs", vtemp);
  262. } else {
  263. // 这里进行人工出库操作
  264. PosParameter param2 = new PosParameter();
  265. param2.setWhereClauseParameter(0, REG_ID[0]);
  266. param2.setWhereClauseParameter(1, OLD_SAMPL_NO);
  267. getDao("mesdao").update("UIH051600_04.update",
  268. param2);
  269. // add by jungan 2010-12-27 插入降余材历史记录
  270. if (ordFl.equals("1")) {
  271. CallableStatement cstm = getDao("mesdao")
  272. .getCallableStatement(
  273. "UIH051600_01.call");
  274. cstm.setString(1, "B");
  275. cstm.setString(2, "S");
  276. cstm.setString(3, REG_ID[0]);
  277. cstm.setString(4, "UIH051600");
  278. cstm.setString(5, "");
  279. cstm.setString(6, "");
  280. cstm.setString(7, "");
  281. cstm.setString(8, OLD_SAMPL_NO);
  282. cstm.setString(9, "CR");
  283. cstm.setString(10, ordNo);
  284. cstm.setString(11, ordSeq);
  285. cstm.setString(12, "");
  286. cstm.setString(13, "");
  287. boolean res = cstm.execute();
  288. cstm.close();
  289. logger
  290. .logInfo("UIM051600 SaveCOIL_IO 盘出保存历史记录结果 : "
  291. + res);
  292. }
  293. // 更新钢卷公共_D 表
  294. PosParameter param3 = new PosParameter();
  295. param3.setWhereClauseParameter(0, coil_no_tmp);
  296. getDao("mesdao").update("UIH051600_02.update",
  297. param3);
  298. // 把钢卷信息清除垛位表
  299. PosParameter param4 = new PosParameter();
  300. param4.setWhereClauseParameter(0, OLD_SAMPL_NO);
  301. getDao("mesdao").update("UIH051600_05.update",
  302. param4);
  303. }
  304. } else {
  305. // 抛出异常
  306. logger.logInfo("SaveCOIL_IO类中,需要盘出库的" + coil_no_tmp
  307. + "不存在,请确认后再进行相应的处理!");
  308. String vtemp = "ERROR";
  309. context.put("rs", vtemp);
  310. }
  311. } else {
  312. // 抛出异常
  313. logger.logInfo("SaveCOIL_IO类中,需要盘出库的" + coil_no_tmp
  314. + "不存在,请确认后再进行相应的处理!");
  315. String vtemp = "ERROR";
  316. context.put("rs", vtemp);
  317. }
  318. }
  319. else if ((COIL_SALE[0].equals("3")||COIL_END[0].equals("4")) && "".equals(COIL_OUT[0])&& "".equals(COIL_IN[0])){
  320. DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
  321. String currDate = formatter.format(new Date());
  322. String seqno="FG"+currDate;
  323. String dlivnoNEXT;
  324. String wg;
  325. dlivnoNEXT=dlivno(seqno);//生成废钢编号
  326. PosParameter param1 = new PosParameter();
  327. param1.setWhereClauseParameter(0, coil_no[0]);
  328. PosRowSet rows = getDao("mesdao").find("UIH051600_03.select",
  329. param1);
  330. if (rows.hasNext()) {
  331. PosRow row = rows.next();
  332. OLD_SAMPL_NO = (String) row.getAttribute("OLD_SAMPL_NO");
  333. coil_no_tmp = (String) row.getAttribute("COIL_NO");
  334. CUR_PROG_CD = (String) row.getAttribute("CUR_PROG_CD");
  335. wg =row.getAttribute("EXTSHAPE_DEC_GRD") != null ? ((String) row.getAttribute("EXTSHAPE_DEC_GRD")).trim() : "";
  336. // add by jungan 2010-12-27 插入降余材历史记录
  337. ordNo = row.getAttribute("ORD_NO") != null ? ((String) row.getAttribute("ORD_NO")).trim() : "";
  338. ordSeq = row.getAttribute("ORD_SEQ") != null ?((String) row.getAttribute("ORD_SEQ")).trim() : "";
  339. ordFl = row.getAttribute("ORD_FL") != null ? ((String) row.getAttribute("ORD_FL")).trim() : "";
  340. if (!"".equals(OLD_SAMPL_NO) && null != OLD_SAMPL_NO) {
  341. if ("".equals(wg) || !("4".equals(wg))) {
  342. // 抛出异常
  343. logger.logInfo("SaveCOIL_IO类中,需要盘出库的" + coil_no_tmp
  344. + "未判废,请确认后再进行相应的处理!");
  345. String vtemp = "CUR_PROG_CD1";
  346. context.put("rs", vtemp);
  347. return PosBizControlConstants.SUCCESS;
  348. }
  349. if (CUR_PROG_CD.equals("SFB")) {
  350. // 抛出异常
  351. logger.logInfo("SaveCOIL_IO类中,需要盘出库的" + coil_no_tmp
  352. + "已经做了下车计划,请确认后再进行相应的处理!");
  353. String vtemp = "CUR_PROG_CD";
  354. context.put("rs", vtemp);
  355. } else {
  356. // 这里进行人工出库操作
  357. PosParameter param2 = new PosParameter();
  358. param2.setWhereClauseParameter(0, REG_ID[0]);
  359. param2.setWhereClauseParameter(1, dlivnoNEXT);
  360. param2.setWhereClauseParameter(2, OLD_SAMPL_NO);
  361. getDao("mesdao").update("UIH051600_08.update",
  362. param2);
  363. // add by jungan 2010-12-27 插入降余材历史记录
  364. if (ordFl.equals("1")) {
  365. CallableStatement cstm = getDao("mesdao")
  366. .getCallableStatement(
  367. "UIH051600_01.call");
  368. cstm.setString(1, "B");
  369. cstm.setString(2, "S");
  370. cstm.setString(3, REG_ID[0]);
  371. cstm.setString(4, "UIH051600");
  372. cstm.setString(5, "");
  373. cstm.setString(6, "");
  374. cstm.setString(7, "");
  375. cstm.setString(8, OLD_SAMPL_NO);
  376. cstm.setString(9, "CR");
  377. cstm.setString(10, ordNo);
  378. cstm.setString(11, ordSeq);
  379. cstm.setString(12, "");
  380. cstm.setString(13, "");
  381. boolean res = cstm.execute();
  382. cstm.close();
  383. logger
  384. .logInfo("UIM051600 SaveCOIL_IO 盘出保存历史记录结果 : "
  385. + res);
  386. }
  387. // 更新钢卷公共_D 表
  388. PosParameter param3 = new PosParameter();
  389. param3.setWhereClauseParameter(0, coil_no_tmp);
  390. getDao("mesdao").update("UIH051600_02.update",
  391. param3);
  392. // 把钢卷信息清除垛位表
  393. PosParameter param4 = new PosParameter();
  394. param4.setWhereClauseParameter(0, OLD_SAMPL_NO);
  395. getDao("mesdao").update("UIH051600_05.update",
  396. param4);
  397. }
  398. } else {
  399. // 抛出异常
  400. logger.logInfo("SaveCOIL_IO类中,需要盘出库的" + coil_no_tmp
  401. + "不存在,请确认后再进行相应的处理!");
  402. String vtemp = "ERROR";
  403. context.put("rs", vtemp);
  404. }
  405. } else {
  406. // 抛出异常
  407. logger.logInfo("SaveCOIL_IO类中,需要盘出库的" + coil_no_tmp
  408. + "不存在,请确认后再进行相应的处理!");
  409. String vtemp = "ERROR";
  410. context.put("rs", vtemp);
  411. }
  412. }
  413. } catch (Exception e) {
  414. // TODO: handle exception
  415. logger.logError("SaveCOIL_IO数据库操作异常a");
  416. logger.logError(e.getMessage());
  417. }
  418. return PosBizControlConstants.SUCCESS;
  419. }
  420. private String dlivno(String syddate) {
  421. String dlivno = "";
  422. PosParameter param1 = new PosParameter();
  423. param1.setWhereClauseParameter(0, syddate);
  424. PosRowSet rows = getDao("mesdao").find("UIH051600_07.select",
  425. param1);
  426. try {
  427. if (rows.hasNext()) {
  428. PosRow row = rows.next();
  429. String temp="";
  430. if("".equals((String) row.getAttribute("WDLIVNO"))||(String) row.getAttribute("WDLIVNO")==null)
  431. {
  432. dlivno=syddate+"01";
  433. }else{
  434. temp = (String) row.getAttribute("WDLIVNO");
  435. temp = temp.substring(10);
  436. int aa=Integer.parseInt(temp) + 1;
  437. temp = new DecimalFormat("00").format(aa);
  438. dlivno=syddate+temp;
  439. }
  440. }
  441. else{
  442. dlivno=syddate+"01";
  443. }
  444. } catch (Exception r) {
  445. } finally {
  446. try {
  447. if (null != rows) {
  448. }
  449. } catch (Exception e) {
  450. }
  451. }
  452. return dlivno;
  453. }
  454. }