8e292592c20abe0ad9b0936612ae35d8d9bc7c15.svn-base 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636
  1. package UIM;
  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.util.Iterator;
  7. import java.util.List;
  8. import java.util.Map;
  9. import UIM.UIM01.BEANS.ColdCoilComm;
  10. import CoreFS.SA01.CoreIComponent;
  11. import CoreFS.SA06.CoreReturnObject;
  12. public class UIM030100 extends CoreIComponent {
  13. /**
  14. * 查询钢卷状态
  15. * @param coilNo
  16. * @return CoreReturnObject
  17. * @throws SQLException
  18. */
  19. public CoreReturnObject queryCoilStatus(String coilNo) throws SQLException
  20. {
  21. CoreReturnObject cro = new CoreReturnObject();
  22. String sql = "select COIL_THK,COIL_WTH,COIL_LEN,ACT_WGT,CAL_WGT," +
  23. "decode(CUR_PROG_CD,'DDB','成品卷入库待机','CRC','酸轧卷充当待机'," +
  24. "'DRC','连退卷充当待机','DBA','重卷指示待机','DBB','重卷作业待机'," +
  25. "'DCA','包装指示待机','DCB','包装作业待机','DED','综合判定待机'," +
  26. "'DFA','发货指示待机','DFB','发货待机','DFF','发货完成') CUR_PROG_CD," +
  27. "DECODE(TOT_DEC_GRD,'1','合格','2','不合格',null,'待判定') TOT_DEC_GRD," +
  28. "YARD_ENTRY_REG,YARD_ENTRY_USE_TIME from c_tbc02_coil_comm WHERE OLD_SAMPL_NO = '" +
  29. coilNo + "'";
  30. cro = this.getDao("KgDao").ExcuteQuery(sql);
  31. return cro;
  32. }
  33. /**
  34. * 成品库钢卷入库
  35. * @param coilNo 钢卷号
  36. * @param yardAddr 垛位
  37. * @param entryShift 入库班次
  38. * @param entryGroup 入库班组
  39. * @param entryDtime 入库时间
  40. * @param reg_id 操作人
  41. * @return CoreReturnObject
  42. * @throws SQLException
  43. */
  44. public CoreReturnObject saveCoilYard(String coilNo,String yardAddr,String entryShift,
  45. String entryGroup,String entryDtime,String reg_id) throws SQLException
  46. {
  47. CoreReturnObject cro = new CoreReturnObject();
  48. //查询钢卷入库信息
  49. String sqlEntry = "select COIL_NO from c_tbc02_coil_comm where OLD_SAMPL_NO = ? AND COIL_STAT = '2'";
  50. List listEntry = this.getDao("KgDao").ExcuteQueryReturnList(sqlEntry,new Object[]{coilNo});
  51. if(listEntry.size() < 1){
  52. cro.setV_errCode(new Integer(1));
  53. cro.setV_errMsg("此钢卷没有轧制完成,或者已经出库!");
  54. }
  55. else{
  56. //查询钢卷出库信息
  57. String sqlOut = "select COIL_NO from c_tbk08_coil_yard where COIL_NO = ?";
  58. List listOut = this.getDao("KgDao").ExcuteQueryReturnList(sqlOut, new Object[]{coilNo});
  59. if(listOut.size() > 0){
  60. cro.setV_errCode(new Integer(2));
  61. cro.setV_errMsg("此钢卷已在垛位中存在!");
  62. }
  63. else{
  64. //将入库操作信息和垛位信息加入连退成品公共表
  65. String sqlucomm = "update c_tbc02_coil_comm set CUR_LOAD_LOC = ?," +
  66. " CUR_LOAD_LOC_DTIME = TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS')," +
  67. " YARD_ENTRY_SHIFT = ?, YARD_ENTRY_GROUP = ?, YARD_ENTRY_REG = ?," +
  68. " YARD_ENTRY_DTIME = ?, " +
  69. " YARD_ENTRY_USE_TIME = TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS')" +
  70. " where OLD_SAMPL_NO = ?";
  71. this.getDao("KgDao").ExcuteNonQuery(sqlucomm,
  72. new Object[]{yardAddr,entryShift,entryGroup,reg_id,entryDtime,coilNo});
  73. //将钢卷信息加入垛位表
  74. String sqluyard = "update c_tbk08_coil_yard set COIL_NO = ?, " +
  75. "MOD_ID = ?, MOD_TIME = TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS')" +
  76. " where CLF_NAME = substr(?,0,5) and CLF_ROW = substr(?,6,2)" +
  77. " and CLF_COL = substr(?,8,1) and CLF_FL = substr(?,9,1)";
  78. this.getDao("KgDao").ExcuteNonQuery(sqluyard,
  79. new Object[]{coilNo,reg_id,yardAddr,yardAddr,yardAddr,yardAddr});
  80. //入库完成后将入库记录加入移垛记录,便于跟踪钢卷移动记录
  81. long seq = 0;//移垛记录表主键
  82. String sqlqmaxseq = "select max(ROLL_SEQ) ROLL_SEQ from c_tbk08_coil_move";
  83. PreparedStatement pSta = this.getDao("KgDao").getPreparedStatement(sqlqmaxseq);
  84. ResultSet rs = pSta.executeQuery();
  85. Connection con =pSta.getConnection();
  86. if(rs.next()){
  87. seq = rs.getLong("ROLL_SEQ");
  88. }
  89. //20131014系统连接异常优化
  90. this.getDao("KgDao").closeRs(rs);
  91. try{
  92. pSta.close(); //添加了关闭pSta;
  93. con.close();
  94. } catch (Exception e) {
  95. }
  96. String sqlimove = "insert into c_tbk08_coil_move T(T.ROLL_SEQ,T.CUR_LOAD_LOC_F,T.CUR_LOAD_LOC_T,T.COIL_NO,T.REG_ID,T.REG_SHIFT,T.REG_GROUP,T.REG_DTIME,T.REG_USE_ID,T.REG_USE_DTIME)VALUES(?,?,?,?,?,?,?,?,?,TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'))";
  97. this.getDao("KgDao").ExcuteNonQuery(sqlimove, new Object[]{seq,"",yardAddr,coilNo,reg_id,entryShift,entryGroup,entryDtime,reg_id});
  98. }
  99. }
  100. return cro;
  101. }
  102. /**
  103. * 查询连退计划
  104. *
  105. * @param ordNo
  106. * 合同号
  107. * @param ordSeq
  108. * 订单号
  109. * @param coilNo
  110. * 热轧卷号
  111. * @return CoreReturnObject
  112. * @throws SQLException
  113. */
  114. public CoreReturnObject queryMillPlan(String coilNo) throws SQLException {
  115. CoreReturnObject cro = new CoreReturnObject();
  116. StringBuffer sqlBuffer = new StringBuffer();
  117. sqlBuffer.append("SELECT \n");
  118. sqlBuffer.append("a.ROLL_MANA_NO --轧制单元号\n");
  119. sqlBuffer.append(",a.ROLL_COIL_SEQ --单元内序号\n");
  120. sqlBuffer.append(",a.COIL_EDT_SEQ --轧制序号\n");
  121. sqlBuffer.append(",a.C_COIL_NO --冷卷号 \n");
  122. sqlBuffer.append(",a.COIL_NO --热卷号 \n");
  123. sqlBuffer.append(",a.SPEC_STL_GRD --酸轧牌号 \n");
  124. sqlBuffer.append(",a.STL_GRD --热轧牌号 \n");
  125. sqlBuffer.append(",a.STL_GRP_CD --钢号组 \n");
  126. sqlBuffer.append(",a.COIL_THK --热卷厚度 \n");
  127. sqlBuffer.append(",a.COIL_WTH --热卷宽度 \n");
  128. sqlBuffer.append(",a.COIL_WGT --热卷重量 \n");
  129. sqlBuffer.append(",b.CUR_LOAD_LOC --堆放位置 \n");
  130. sqlBuffer.append(",a.ORD_NO --合同号 \n");
  131. sqlBuffer.append(",a.ORD_SEQ --订单号 \n");
  132. sqlBuffer.append(",a.ORD_THK --订单厚度 \n");
  133. sqlBuffer.append(",a.ORD_WTH --订单宽度 \n");
  134. sqlBuffer.append(",a.ORD_WGT --订单重量 \n");
  135. sqlBuffer.append(",a.ORD_WGT_MIN --订单下限 \n");
  136. sqlBuffer.append(",a.ORD_WGT_MAX --订单上限 \n");
  137. sqlBuffer.append(",a.ORD_INDIA --订单内径 \n");
  138. sqlBuffer.append(",a.ORD_OUTDIA --订单外径 \n");
  139. sqlBuffer.append("FROM c_tbf04_spec_mill a, \n");
  140. sqlBuffer.append("c_tbc02_coil_comm b \n");
  141. sqlBuffer.append("WHERE a.COIL_NO = b.COIL_NO \n");
  142. sqlBuffer.append("and a.STATUS_CD = 'A' \n");
  143. sqlBuffer.append("and b.COIL_NO like ?||'%' \n");
  144. sqlBuffer.append("ORDER BY a.ROLL_MANA_NO,a.ROLL_COIL_SEQ \n");
  145. cro = this.getDao("KgDao").ExcuteQuery(sqlBuffer.toString(),
  146. new Object[] { coilNo });
  147. return cro;
  148. }
  149. public CoreReturnObject saveCoilOut(Integer outType, String coilNo,
  150. String regId, String trnfShift, String trnfGroup, String trnfTime,
  151. String trnfRemark) throws SQLException {
  152. CoreReturnObject cro = new CoreReturnObject();
  153. // 清除原料库垛位表钢卷信息并将原料公共表钢卷垛位信息置为出库
  154. boolean crs = cleanCoil(outType.intValue(), coilNo, regId, trnfShift,
  155. trnfGroup, trnfTime, trnfRemark);
  156. if (crs) {
  157. // 如果是退回出库,将热轧公共表钢卷数据改为可入库
  158. if (3 == outType.intValue()) {
  159. }
  160. // 修改进程、计划
  161. }
  162. return cro;
  163. }
  164. /**
  165. * 清空钢卷库存信息
  166. *
  167. * @param outType
  168. * 出库类型
  169. * @param coilNo
  170. * 钢卷号
  171. * @param regId
  172. * 出库人
  173. * @param trnfShift
  174. * 出库班次
  175. * @param trnfGroup
  176. * 出库班组
  177. * @param tranTime
  178. * 出库时间
  179. * @return boolean
  180. */
  181. private boolean cleanCoil(int outType, String coilNo, String regId,
  182. String trnfShift, String trnfGroup, String trnfTime,
  183. String trnfRemark) throws SQLException {
  184. // 根据钢卷号查询垛位编号
  185. String sql1 = "select clf_no from c_tbk08_coil_yard where coil_no = '"
  186. + coilNo + "'";
  187. ResultSet rs = this.getDao("KgDao").ExceuteQueryForResultSet(sql1);
  188. long yardNo = 0;
  189. // 如果钢卷在原料库中,查询出相应的垛位编号
  190. if (rs.next()) {
  191. yardNo = Long.parseLong(rs.getObject("clf_no").toString());
  192. } else {
  193. return false;
  194. }
  195. //20131014系统连接异常优化
  196. this.getDao("KgDao").closeRs(rs);
  197. // 根据垛位编号清除钢卷信息
  198. String sql2 = "update c_tbk08_coil_yard set coil_no = '' where clf_no = ?";
  199. this.getDao("KgDao").ExcuteNonQuery(sql2, new Object[] { yardNo });
  200. // 修改原料公共表钢卷操作信息
  201. StringBuffer sql3 = new StringBuffer();
  202. sql3.append("update c_tbc02_coil_comm set \n");
  203. sql3.append("coil_stat = '3', --进程状态\n");
  204. // 如果是上料出库,更新物料进程代码为酸轧卷取待机,如果是退废或退回出库,不处理
  205. switch (outType) {
  206. case 1:
  207. sql3.append("cur_prog_cd = 'PCC', --物料进程代码\n");
  208. break;
  209. case 2:
  210. trnfRemark = "退废";
  211. break;
  212. case 3:
  213. trnfRemark = "退回";
  214. break;
  215. }
  216. sql3.append("trnf_reg = :1, --出库人\n");
  217. sql3.append("trnf_shift=:2, --出库班次\n");
  218. sql3.append("trnf_group=:3, --出库班组\n");
  219. sql3
  220. .append("trnf_use_time=TO_CHAR(SYSDATE,'YYYYMMDDHH24MIDD'), --出库操作时间\n");
  221. sql3.append("trnf_dtime=:4, --出库时间\n");
  222. sql3.append("trnf_remark=:5 --出库备注\n");
  223. sql3.append("where coil_no = :6 --钢卷号\n");
  224. this.getDao("KgDao").ExcuteNonQuery(
  225. sql3.toString(),
  226. new Object[] { regId, trnfShift, trnfGroup, trnfTime, coilNo,
  227. trnfRemark });
  228. return true;
  229. }
  230. /**
  231. * 查询钢卷信息
  232. *
  233. * @param coilNo
  234. * 热轧卷号
  235. * @return CoreReturnObject
  236. * @throws SQLException
  237. */
  238. public CoreReturnObject queryCoilInfo(String coilNo) throws SQLException {
  239. CoreReturnObject cro = new CoreReturnObject();
  240. StringBuffer sqlBuffer = new StringBuffer();
  241. sqlBuffer
  242. .append("SELECT A.SPEC_STL_GRD,A.COIL_THK||'*'||A.COIL_WTH T_W,\n");
  243. sqlBuffer.append(" A.INSTR_COIL_THK||'*'||A.INSTR_COIL_WTH IT_IW,\n");
  244. sqlBuffer
  245. .append(" A.ORD_NO,A.ORD_SEQ,A.COIL_LEN,A.ACT_WGT,A.CAL_WGT,\n");
  246. sqlBuffer
  247. .append(" DECODE(A.CUR_PROG_CD,'PAB','原料库入库待机','PRC','原料库充当待机','PCA','酸轧指示待机','PCB','酸轧轧制待机','PCC','酸轧卷取待机',null) CUR_PROG_CD,\n");
  248. sqlBuffer
  249. .append(" DECODE(A.TOT_DEC_GRD,'1','合格','2','不合格','3','次品','4','废品','','待判定') TOT_DEC_GRD,\n");
  250. sqlBuffer
  251. .append(" DECODE(A.ORD_FL,'1','订单材','2','余材','','未判') ORD_FL,\n");
  252. sqlBuffer
  253. .append(" DECODE(A.COIL_STAT,'1','未入库','2','在库','3','出库/结束',null) COIL_STAT,\n");
  254. sqlBuffer
  255. .append(" A.COIL_IN_REG,A.COIL_IN_DTIME,A.COIL_OUT_REG,A.COIL_OUT_DTIME\n");
  256. sqlBuffer.append(" FROM C_TBC02_COIL_COMM A WHERE A.COIL_NO = ? \n");
  257. cro = this.getDao("KgDao").ExcuteQuery(sqlBuffer.toString(),
  258. new Object[] { coilNo });
  259. return cro;
  260. }
  261. /**
  262. * 盘入盘出操作
  263. *
  264. * @param type
  265. * 盘入/盘出 0/1
  266. * @param coilNo
  267. * 钢卷号
  268. * @param curLoadLoc
  269. * 垛位
  270. * @param regId
  271. * 盘入人
  272. * @return
  273. * @throws SQLException
  274. */
  275. public CoreReturnObject save(Integer type, String coilNo,
  276. String curLoadLoc, String regId) throws SQLException {
  277. CoreReturnObject cro = new CoreReturnObject();
  278. // 判断是做盘入操作还是做盘出操作
  279. if (0 == type.intValue()) {
  280. // 盘入操作,首先要检查钢卷号是否存在系统。不存在的情况下给予提示
  281. ColdCoilComm coldCoil = findCoil(coilNo, 0);
  282. if (null != coldCoil && !isNull(coldCoil.getCoilNo())) {
  283. // 正常出库的卷暂时不允许发货
  284. if ("3".equals(coldCoil.getCoilStat())
  285. && "PCC".equals(coldCoil.getCurProgCd())
  286. && !isNull(coldCoil.getTrnfDTime())) {
  287. // 抛出异常
  288. cro.setV_errCode(new Integer(1));
  289. cro.setV_errMsg("需要盘入库的钢卷属于正常出库,不能进行盘入操作!");
  290. } else {
  291. // 输入垛位为空或不存在此垛位
  292. if (!isNull(curLoadLoc) && hasYard(curLoadLoc)) {
  293. // 检查要盘入的垛位上是否存在钢卷
  294. String coilNoTmp = this.hasCoilOnYard(curLoadLoc);
  295. if (isNull(coilNoTmp)) {
  296. // 人工盘入库的卷改为余材
  297. StringBuffer updCommBuffer = new StringBuffer();
  298. updCommBuffer
  299. .append("UPDATE C_TBC02_COIL_COMM A SET \n");
  300. updCommBuffer.append(" A.CUR_LOAD_LOC = ?,\n");
  301. updCommBuffer.append(" A.COIL_IN_REG = ?,\n");
  302. updCommBuffer.append(" A.CUR_PROG_CD = 'PRC',\n");
  303. updCommBuffer.append(" A.CUR_PROG_CD_PGM = 'UIM030100',\n");
  304. updCommBuffer.append(" A.CUR_PROG_CD_DTIME = TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'),\n");
  305. updCommBuffer.append(" A.COIL_STAT = '2',\n");
  306. updCommBuffer.append("A.ORD_FL = '2',\n");
  307. updCommBuffer.append(" A.ORD_NO = '',\n");
  308. updCommBuffer.append(" A.ORD_SEQ = '',\n");
  309. updCommBuffer
  310. .append(" A.COIL_IN_DTIME = TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS')\n");
  311. updCommBuffer.append(" WHERE A.COIL_NO = ?\n");
  312. this.getDao("KgDao").ExcuteNonQuery(
  313. updCommBuffer.toString(),
  314. new Object[] { curLoadLoc, regId, coilNo });
  315. // 更新原料公共_D表
  316. StringBuffer updCommDBuffer = new StringBuffer();
  317. updCommDBuffer
  318. .append("UPDATE C_TBC02_COIL_COMM_D A SET\n");
  319. updCommDBuffer.append(" A.ORD_FL = '2'\n");
  320. updCommDBuffer.append(" WHERE A.COIL_NO = ?\n");
  321. this.getDao("KgDao").ExcuteNonQuery(
  322. updCommDBuffer.toString(),
  323. new Object[] { coilNo });
  324. // 将钢卷信息录入垛位表
  325. StringBuffer updYardBuffer = new StringBuffer();
  326. updYardBuffer
  327. .append("UPDATE C_TBH08_COIL_YARD A SET\n");
  328. updYardBuffer.append(" A.COIL_NO = ?\n");
  329. updYardBuffer.append(" WHERE A.CLF_NAME = ?\n");
  330. updYardBuffer.append(" AND A.CLF_ROW = ?\n");
  331. updYardBuffer.append(" AND A.CLF_COL = ?\n");
  332. updYardBuffer.append(" AND A.CLF_FL = ?\n");
  333. this.getDao("KgDao").ExcuteNonQuery(
  334. updYardBuffer.toString(),
  335. new Object[] { coilNo,
  336. curLoadLoc.substring(0, 5),
  337. curLoadLoc.substring(5, 7),
  338. curLoadLoc.substring(7, 9),
  339. curLoadLoc.substring(9, 10) });
  340. }
  341. } else {
  342. cro.setV_errCode(new Integer(2));
  343. cro.setV_errMsg("需要盘入库的钢卷垛位信息不正确,请输入正确的垛位后再进行相应操作!");
  344. }
  345. }
  346. } else {
  347. cro.setV_errCode(new Integer(3));
  348. cro.setV_errMsg("需要盘入库的钢卷在库存中,请确认后再进行相应操作!");
  349. }
  350. } else {
  351. // 盘出操作,首先要检查钢卷号是否存在系统。不存在的情况下给予提示
  352. ColdCoilComm coldCoil = findCoil(coilNo, 1);
  353. if (null != coldCoil && !isNull(coldCoil.getCoilNo())) {
  354. if ("PCB".equals(coldCoil.getCurProgCd())) {
  355. cro.setV_errCode(new Integer(4));
  356. cro.setV_errMsg("需要盘出库的钢卷已经做了轧制计划,请撤销计划后再进行相应操作!");
  357. } else {
  358. // 更新原料公共表
  359. StringBuffer updCommStr = new StringBuffer();
  360. updCommStr.append("UPDATE C_TBC02_COIL_COMM A SET\n");
  361. updCommStr.append(" A.COIL_STAT = '3',\n");
  362. updCommStr.append(" A.CUR_LOAD_LOC = '',\n");
  363. updCommStr.append(" A.ORD_FL = '2',\n");
  364. updCommStr.append(" A.ORD_NO = '',\n");
  365. updCommStr.append(" A.ORD_SEQ = '',\n");
  366. updCommStr.append(" A.COIL_OUT_REG = ?,\n");
  367. updCommStr
  368. .append(" A.COIL_OUT_DTIME = TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS')\n");
  369. updCommStr.append(" WHERE A.OLD_SAMPL_NO = ?\n");
  370. this.getDao("KgDao").ExcuteNonQuery(updCommStr.toString(),
  371. new Object[] { regId, coilNo });
  372. // 更新原料公共_D表
  373. StringBuffer updCommDStr = new StringBuffer();
  374. updCommDStr.append("UPDATE C_TBC02_COIL_COMM_D A SET\n");
  375. updCommDStr.append(" A.ORD_FL = '2'\n");
  376. updCommDStr.append(" WHERE A.COIL_NO = ?\n");
  377. this.getDao("KgDao").ExcuteNonQuery(updCommDStr.toString(),
  378. new Object[] { coilNo });
  379. // 更新垛位表
  380. StringBuffer updYardStr = new StringBuffer();
  381. updYardStr.append("UPDATE C_TBK08_COIL_YARD T SET\n");
  382. updYardStr.append(" T.COIL_NO = '',\n");
  383. updYardStr.append(" T.MOD_ID = '',\n");
  384. updYardStr.append(" T.MOD_TIME = ''\n");
  385. updYardStr.append(" WHERE T.COIL_NO = ?\n");
  386. this.getDao("KgDao").ExcuteNonQuery(updYardStr.toString(),
  387. new Object[] { coilNo });
  388. }
  389. } else {
  390. cro.setV_errCode(new Integer(5));
  391. cro.setV_errMsg("需要盘出库的钢卷不在库存中,请确认后再进行相应操作!");
  392. }
  393. }
  394. return cro;
  395. }
  396. /**
  397. * 查找钢卷号是否存在
  398. *
  399. * @param coilNo
  400. * @param type
  401. * 0盘入 1盘出
  402. * @return
  403. */
  404. private ColdCoilComm findCoil(String coilNo, int type) {
  405. PreparedStatement prepStat = null;
  406. ColdCoilComm coldCoil = null;
  407. ResultSet rs = null;
  408. Connection con =null;
  409. try {
  410. StringBuffer sqlBuffer = new StringBuffer();
  411. sqlBuffer.append("SELECT A.COIL_NO,A.COIL_STAT,\n");
  412. sqlBuffer.append(" A.SLAB_NO,a.CUR_PROG_CD,\n");
  413. sqlBuffer.append(" a.TRNF_DTIME FROM C_TBC02_COIL_COMM A \n");
  414. sqlBuffer.append(" WHERE COIL_NO = ? \n");
  415. String tmp = 0 == type ? "<>" : "=";
  416. sqlBuffer.append(" AND A.COIL_STAT " + tmp + " '2'\n");
  417. prepStat = this.getDao("KgDao").getPreparedStatement(
  418. sqlBuffer.toString());
  419. prepStat.setString(1, coilNo);
  420. con=prepStat.getConnection();
  421. rs = prepStat.executeQuery();
  422. if (rs.next()) {
  423. coldCoil = new ColdCoilComm();
  424. coldCoil.setCoilNo(rs.getString("COIL_NO"));
  425. coldCoil.setCoilStat(rs.getString("COIL_STAT"));
  426. coldCoil.setCurProgCd(rs.getString("CUR_PROG_CD"));
  427. coldCoil.setSlabNo(rs.getString("SLAB_NO"));
  428. coldCoil.setTrnfDTime(rs.getString("TRNF_DTIME"));
  429. }
  430. } catch (SQLException sqle) {
  431. } finally {
  432. try {
  433. if (null != rs) {
  434. rs.close();
  435. }
  436. if (null != prepStat) {
  437. prepStat.close();
  438. }
  439. if (null != con) {
  440. con.close();
  441. }
  442. } catch (Exception e) {
  443. }
  444. }
  445. return coldCoil;
  446. }
  447. /**
  448. * 判断对象是否为空
  449. *
  450. * @param obj
  451. * @return boolean
  452. */
  453. private boolean isNull(Object obj) {
  454. boolean isNull = true;
  455. if (null != obj && !"".equals(obj)) {
  456. isNull = false;
  457. }
  458. return isNull;
  459. }
  460. /**
  461. * 查询垛位是否存在
  462. *
  463. * @param curLoadLoc
  464. * @return
  465. */
  466. private boolean hasYard(String curLoadLoc) {
  467. boolean b = false;
  468. StringBuffer sqlBuffer = new StringBuffer();
  469. sqlBuffer
  470. .append("SELECT A.CLF_NO FROM C_TBK08_COIL_YARD A,C_TBK08_COIL_YARD_AREA B WHERE\n");
  471. sqlBuffer.append(" A.AREA_NO = B.AREA_NO AND B.AREA_TYPE = '3'\n");
  472. sqlBuffer
  473. .append(" AND A.CLF_NAME||to_char(A.CLF_ROW,'00')||to_char(A.CLF_COL,'00')||A.CLF_FL\n");
  474. sqlBuffer.append(" = ? \n");
  475. PreparedStatement prep = null;
  476. ResultSet rs = null;
  477. Connection con =null;
  478. try {
  479. prep = this.getDao("KgDao").getPreparedStatement(
  480. sqlBuffer.toString());
  481. prep.setString(0, curLoadLoc);
  482. rs = prep.executeQuery();
  483. con=prep.getConnection();
  484. if (rs.next()) {
  485. b = true;
  486. }
  487. } catch (SQLException sqle) {
  488. } finally {
  489. try {
  490. if (null != rs) {
  491. rs.close();
  492. }
  493. if (null != prep) {
  494. prep.close();
  495. }
  496. if (null != con) {
  497. con.close();
  498. }
  499. } catch (Exception e) {
  500. }
  501. }
  502. return b;
  503. }
  504. /**
  505. * 判断原料库垛位上是否存在有钢卷
  506. *
  507. * @param curLoadLoc
  508. * 堆放位置
  509. * @return String
  510. */
  511. private String hasCoilOnYard(String curLoadLoc) {
  512. String coilNo = "";
  513. StringBuffer sqlBuffer = new StringBuffer();
  514. sqlBuffer
  515. .append("SELECT A.COIL_NO FROM C_TBK08_COIL_YARD A,C_TBK08_COIL_YARD_AREA B WHERE\n");
  516. sqlBuffer.append(" A.AREA_NO = B.AREA_NO AND B.AREA_TYPE = '3'\n");
  517. sqlBuffer
  518. .append(" AND A.CLF_NAME||to_char(A.CLF_ROW,'00')||to_char(A.CLF_COL,'00')||A.CLF_FL\n");
  519. sqlBuffer.append(" = ? \n");
  520. PreparedStatement prep = null;
  521. ResultSet rs = null;
  522. Connection con =null;
  523. try {
  524. prep = this.getDao("KgDao").getPreparedStatement(
  525. sqlBuffer.toString());
  526. prep.setString(1, curLoadLoc);
  527. rs = prep.executeQuery();
  528. con = prep.getConnection();
  529. if (rs.next()) {
  530. coilNo = rs.getString("COIL_NO");
  531. }
  532. } catch (SQLException sqle) {
  533. } finally {
  534. try {
  535. if (null != rs) {
  536. rs.close();
  537. }
  538. if (null != prep) {
  539. prep.close();
  540. }
  541. if (null != con) {
  542. con.close();
  543. }
  544. } catch (Exception e) {
  545. }
  546. }
  547. return coilNo;
  548. }
  549. /**
  550. * 查询钢卷位置
  551. *
  552. * @param coilNo
  553. * 热轧卷号
  554. * @return CoreReturnObject
  555. * @throws SQLException
  556. */
  557. public CoreReturnObject queryLoadLoc(String coilNo) throws SQLException {
  558. CoreReturnObject cro = new CoreReturnObject();
  559. StringBuffer sqlBuffer = new StringBuffer();
  560. sqlBuffer.append("select k.cur_load_loc from c_tbc02_coil_comm k,\n");
  561. sqlBuffer.append("c_tbk08_coil_yard y,c_tbk08_coil_yard_area a \n");
  562. sqlBuffer.append("where k.COIL_NO = y.COIL_NO \n");
  563. sqlBuffer.append("and y.AREA_NO = a.AREA_NO \n");
  564. sqlBuffer.append("and a.AREA_TYPE = 1 \n");
  565. sqlBuffer.append("and k.coil_no = ?");
  566. List list = this.getDao("KgDao").ExcuteQueryReturnList(sqlBuffer.toString(),
  567. new Object[] { coilNo });// .ExcuteQuery(sql);
  568. String curLoadLoc = "";
  569. Iterator it = list.iterator();
  570. while (it.hasNext()) {
  571. Map map = (Map) it.next();
  572. curLoadLoc = map.get("cur_load_loc").toString();
  573. }
  574. // System.out.println(count);
  575. cro.setResult(curLoadLoc);
  576. return cro;
  577. }
  578. }