package UIJ.UIJ05; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.Types; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.text.SimpleDateFormat; import UIJ.UIJ03.UIJ030052; import UIJ.UIJ03.UIJ030060; import org.apache.commons.lang.StringUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import xin.glue.cargocnHttpClient.WayBill; import UIB.COM.ProduceFactory; import UIB.COM.XmlSqlParsersFactory; import CoreFS.SA01.CoreIComponent; import CoreFS.SA06.CoreReturnObject; public class UIJ050010 extends CoreIComponent { public CoreReturnObject queryTransPlanLt(String shipProgCd, String fromDate, String toDate, String shipDirNo, String curProgCd, String shipCompNm, String dlivTp, String laneTp, String enteranceSeq) throws SQLException { CoreReturnObject cro = null; StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append("SELECT '' CHK,\n"); sqlBuffer.append(" B.SHIP_DIRNO,\n"); // sqlBuffer.append(" B.GET_ON_PCD,\n"); sqlBuffer.append(" B.DEST_PCD,\n"); sqlBuffer .append(" (SELECT sm_cfnm FROM TBZ00_COMMCD WHERE LG_CD = 'A01009' AND b.DEST_PCD = SM_CD) DEST_PCD_DESC,\n"); sqlBuffer.append(" B.EXLV_LINE_CD,\n"); sqlBuffer .append(" (SELECT x.SM_CFNM FROM TBZ00_COMMCD x WHERE LG_CD = 'A01015' AND b.EXLV_LINE_CD = SM_CD) EXLV_LINE_CD_DESC,\n"); sqlBuffer .append(" (select CUST_NM FROM TBZ00_CUSTOMER WHERE CUST_CD = b.CUST_CD and REC_TP='01') CUST_NM, \n"); sqlBuffer .append(" (select CUST_NM ORD_NM FROM TBZ00_CUSTOMER WHERE CUST_CD = b.ORD_CUST_CD and REC_TP='02') ORD_NM,\n"); sqlBuffer.append(" B.GET_OFF_PCD,\n"); sqlBuffer.append(" B.DLIV_TP,\n"); sqlBuffer.append(" D.SM_CFNM AS DLIV_TP_NM,\n"); sqlBuffer.append(" B.SHIP_COMP_CD,\n"); sqlBuffer.append(" C.SHIP_COMP_NM SM_CFNM,\n"); sqlBuffer.append(" B.TRAIN_DLIVNO,\n"); sqlBuffer.append(" B.DLIV_DIRNO,\n"); sqlBuffer.append(" NVL(B.CNT,0) AS CNT,\n"); sqlBuffer.append(" NVL(B.ACT_WGT,0) AS ACT_WGT,\n"); sqlBuffer.append(" B.ALLOC_SEQ,\n"); sqlBuffer.append(" B.TRANS_CAR_NO,\n"); sqlBuffer.append(" B.LANE_TP,\n"); sqlBuffer.append(" B.ENTERANCE_SEQ,\n"); sqlBuffer.append(" B.ORD_NO,\n"); sqlBuffer.append(" B.ORD_SEQ,\n"); sqlBuffer.append(" B.SPEC_STL_GRD,\n"); sqlBuffer.append(" B.INSTR_COIL_THK||'*'||B.INSTR_COIL_WTH T_W \n"); sqlBuffer.append(" FROM(SELECT *\n"); sqlBuffer.append(" FROM TBJ01_SHIP_DIR\n"); sqlBuffer.append(" WHERE 1 = 1\n"); sqlBuffer .append(" AND SHIP_PROG_CD = ? -- SHIP_PROG_CD = '03' 发货指示状态\n"); sqlBuffer .append(" AND SHIP_DIRNO BETWEEN NVL(?,'00000101')||'0000' AND NVL(?,'99991231')||'9999'\n"); sqlBuffer.append(" AND SHIP_DIRNO LIKE ?||'%') A \n"); sqlBuffer .append(" ,(SELECT X.*, Y.CNT CNT, Y.ACT_WGT ACT_WGT,Y.ORD_NO,Y.ORD_SEQ,Y.SPEC_STL_GRD,Y.INSTR_COIL_THK,Y.INSTR_COIL_WTH \n"); sqlBuffer.append(" FROM TBJ01_DLIV_DIR X\n"); sqlBuffer.append(" ,(SELECT DLIV_DIRNO\n"); sqlBuffer.append(" , COUNT(*) AS CNT\n"); sqlBuffer.append(" , NVL(SUM(ACT_WGT),0) AS ACT_WGT\n"); sqlBuffer.append(" , MAX(ORD_NO) AS ORD_NO\n"); sqlBuffer.append(" , MAX(ORD_SEQ) AS ORD_SEQ\n"); sqlBuffer.append(" , MAX(SPEC_STL_GRD) AS SPEC_STL_GRD\n"); sqlBuffer.append(" , MAX(INSTR_COIL_THK) AS INSTR_COIL_THK\n"); sqlBuffer.append(" , MAX(INSTR_COIL_WTH) AS INSTR_COIL_WTH\n"); sqlBuffer.append(" FROM C_TBC02_COIL_COMM\n"); sqlBuffer.append(" WHERE 1 = 1\n"); sqlBuffer .append(" AND CUR_PROG_CD like ?||'%' -- CUR_PROG_CD = 'SFB'(物料进度)\n"); sqlBuffer .append(" AND SHIP_DIRNO BETWEEN NVL(?,'00000101')||'0000' AND NVL(?,'99991231')||'9999'\n"); sqlBuffer.append(" GROUP BY DLIV_DIRNO) Y\n"); sqlBuffer.append(" WHERE X.DLIV_DIRNO = Y.DLIV_DIRNO\n"); sqlBuffer.append(" AND X.DLIV_TP LIKE ?||'%'\n"); sqlBuffer.append(" AND NVL(X.LANE_TP,'*') LIKE ?||'%'\n"); sqlBuffer.append(" AND NVL(X.ENTERANCE_SEQ,0) = NVL(?,0)) B\n"); sqlBuffer.append(" ,(SELECT *\n"); sqlBuffer.append(" FROM TBJ00_SHIP_COMP\n"); sqlBuffer.append(" WHERE SHIP_COMP_CD LIKE ?||'%') C\n"); sqlBuffer .append(" ,(SELECT SM_CD, SM_CFNM FROM TBZ00_COMMCD WHERE LG_CD = 'A01012' AND SM_CD LIKE ?||'%') D\n"); sqlBuffer.append(" WHERE A.SHIP_DIRNO = B.SHIP_DIRNO(+)\n"); sqlBuffer.append(" AND B.SHIP_COMP_CD = C.SHIP_COMP_CD(+)\n"); sqlBuffer.append(" AND D.SM_CD = B.DLIV_TP \n"); sqlBuffer.append(" AND B.ISDELETED = 0\n"); sqlBuffer.append(" AND B.ISCANCEL = 0\n"); sqlBuffer.append(" ORDER BY B.ALLOC_SEQ,B.DLIV_DIRNO\n"); cro = this.getDao("KgDao").ExcuteQuery( sqlBuffer.toString(), new Object[] { shipProgCd, fromDate, toDate, shipDirNo, curProgCd, fromDate, toDate, dlivTp, laneTp, enteranceSeq, shipCompNm, dlivTp, }); return cro; } //20131112火车排车 public CoreReturnObject saveSHIPDIRTRAINLt(ArrayList list) throws SQLException{ CoreReturnObject cro = new CoreReturnObject(); Connection conn = null; PreparedStatement pSta = null; try { conn = this.getDao("KgDao").getConnection(); conn.setAutoCommit(false); StringBuffer sqlBuffer = null; for (int i = 0; i < list.size(); i++) { // 判断是否全部选择的标志位 boolean flag = true; String[] param = list.get(i); // 查询钢卷公共表中的SHIP_PROG_CD状态 sqlBuffer = new StringBuffer(); sqlBuffer.append("select a.SHIP_PROG_CD from C_TBC02_COIL_COMM a where a.ship_dirno = '" + param[5] + "'\n"); Statement sta = conn.createStatement(); ResultSet rs = sta.executeQuery(sqlBuffer.toString()); while (rs.next()) { String shipProgCd = rs.getString("SHIP_PROG_CD"); if (!"03".equals(shipProgCd)) { flag = false; cro.setV_errCode(-1); cro.setV_errMsg("指示号"+param[4]+"已装车或明细已打印,请检查相应钢卷信息,再进行操作!!!"); break; } } rs.close(); sta.close(); if (flag) { // 把车厢号和排车顺序号放入运输表,不改变运输表的状态 sqlBuffer = new StringBuffer(); sqlBuffer.append(" update tbj01_dliv_dir\n"); sqlBuffer.append(" set \n"); sqlBuffer.append(" ALLOC_SEQ = ?,\n"); sqlBuffer.append(" TRANS_CAR_NO = ? ,\n"); sqlBuffer.append(" LANE_TP = ?,\n"); sqlBuffer.append(" ENTERANCE_SEQ = ?\n"); sqlBuffer.append(" WHERE DLIV_DIRNO = ?\n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, param[0]); pSta.setString(2, param[1]); pSta.setString(3, param[2]); pSta.setString(4, param[3]); pSta.setString(5, param[4]); pSta.executeUpdate(); pSta.close(); // 更新钢卷公共表中的车辆号,排车顺序号 sqlBuffer = new StringBuffer(); sqlBuffer.append(" update C_TBC02_COIL_COMM\n"); sqlBuffer.append(" set \n"); sqlBuffer.append(" TRAIN_STEP_NO = ?,\n"); sqlBuffer.append(" TRANS_CAR_NO = ?,\n"); sqlBuffer.append(" SHIP_PROG_CD = '04'\n"); sqlBuffer.append(" where DLIV_DIRNO =?\n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, param[0]); pSta.setString(2, param[1]); pSta.setString(3, param[4]); pSta.executeUpdate(); pSta.close(); // 更新发货表发货状态 sqlBuffer = new StringBuffer(); sqlBuffer.append(" UPDATE TBJ01_SHIP_DIR \n"); sqlBuffer.append(" SET \n"); sqlBuffer.append(" SHIP_PROG_CD = '04' \n"); sqlBuffer.append(" WHERE SHIP_DIRNO=?\n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, param[5]); pSta.executeUpdate(); pSta.close(); } } conn.commit(); } catch (SQLException ex) { if(conn != null){ conn.rollback(); } cro.setV_errCode(-1); cro.setV_errMsg("装车失败,请检查钢卷信息后重新操作!"); } finally{ if(conn != null && !conn.isClosed()){ conn.close(); } } return cro; } public CoreReturnObject saveSHIPDIRCARLt(ArrayList list) throws SQLException { CoreReturnObject cro = new CoreReturnObject(); Connection conn = null; PreparedStatement pSta = null; try { conn = this.getDao("KgDao").getConnection(); conn.setAutoCommit(false); StringBuffer sqlBuffer = null; for (int i = 0; i < list.size(); i++) { // 判断是否全部选择的标志位 boolean flag = true; String ysr="",url=""; String[] param = list.get(i); /* sqlBuffer = new StringBuffer(); sqlBuffer .append("SELECT nvl(t1.ysr,'0') ysr from tba01_ord_line t, sel_test t1 " + "where t.DEST_PCD = t1.stationcode and t.ORD_NO='"+param[4]+"' and t.ORD_SEQ='"+param[5]+"' and rownum=1"); ArrayList xslist = (ArrayList) this.getDao("KgDao") .ExcuteQueryReturnList(sqlBuffer.toString(), new String[] {}); for (int j = 0; j < xslist.size(); j++) { Map map1 = (Map) xslist.get(j); ysr = map1.get("ysr").toString(); } if("0".equals(ysr)) { UIJ030052 uij030052 = new UIJ030052(); url="http://172.16.0.49/xg56/webservice/webWaybill/queryIsChecked/"+param[2]; String retr=uij030052.jsonPost(url, param[2]); //retr="["+retr+"]"; JSONObject jsonObject1 =JSONObject.parseObject(retr); JSONObject jsonObj = new JSONObject(jsonObject1); String RET_CODE = jsonObj.getString("RET_CODE"); if("0".equals(RET_CODE)) { cro.setV_errCode(new Integer(-1)); cro.setV_errMsg("司机身份未核对!"); return cro; } } */ // 查询钢卷公共表中的SHIP_PROG_CD状态 sqlBuffer = new StringBuffer(); sqlBuffer .append("select a.SHIP_PROG_CD from C_TBC02_COIL_COMM a where a.ship_dirno = '" + param[3] + "'\n"); Statement sta = conn.createStatement(); ResultSet rs = sta.executeQuery(sqlBuffer.toString()); while (rs.next()) { String shipProgCd = rs.getString("SHIP_PROG_CD"); if (!"03".equals(shipProgCd)) { flag = false; cro.setV_errCode(-1); cro.setV_errMsg("指示号"+param[2]+"已装车或明细已打印,请检查相应钢卷信息,再进行操作!!!"); break; } } rs.close(); sta.close(); if (flag) { // 把车厢号和排车顺序号放入运输表,不改变运输表的状态 sqlBuffer = new StringBuffer(); sqlBuffer.append(" update tbj01_dliv_dir\n"); sqlBuffer.append(" set \n"); sqlBuffer.append(" ALLOC_SEQ = ?,\n"); sqlBuffer.append(" TRANS_CAR_NO = ? \n"); sqlBuffer.append(" where DLIV_DIRNO = ?\n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, param[0]); pSta.setString(2, param[1]); pSta.setString(3, param[2]); pSta.executeUpdate(); pSta.close(); // 更新钢卷公共表中的车辆号,排车顺序号 sqlBuffer = new StringBuffer(); sqlBuffer.append(" update C_TBC02_COIL_COMM\n"); sqlBuffer.append(" set \n"); sqlBuffer.append(" TRAIN_STEP_NO = ?,\n"); sqlBuffer.append(" TRANS_CAR_NO = ?,\n"); sqlBuffer.append(" SHIP_PROG_CD = '04'\n"); sqlBuffer.append(" where DLIV_DIRNO =?\n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, param[0]); pSta.setString(2, param[1]); pSta.setString(3, param[2]); pSta.executeUpdate(); pSta.close(); // 更新发货表发货状态 sqlBuffer = new StringBuffer(); sqlBuffer.append(" update tbj01_ship_dir\n"); sqlBuffer.append(" set \n"); sqlBuffer.append(" ship_prog_cd = '04' \n"); sqlBuffer.append(" where ship_dirno =?\n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, param[3]); pSta.executeUpdate(); pSta.close(); } } conn.commit(); } catch (SQLException ex) { if(conn != null){ conn.rollback(); } cro.setV_errCode(-1); cro.setV_errMsg("装车失败,请检查钢卷信息后重新操作!"); } finally{ if(conn != null && !conn.isClosed()){ conn.close(); } } return cro; } /** * 待装车取消 * * @param list * @return * @throws SQLException */ public CoreReturnObject returnSHIPDIRCARLt(ArrayList list) throws SQLException { CoreReturnObject cro = new CoreReturnObject(); String[] param = null; Connection conn = null; Statement sta = null; PreparedStatement pSta = null; try { conn = this.getDao("KgDao").getConnection(); conn.setAutoCommit(false); for (int i = 0; i < list.size(); i++) { param = (String[]) list.get(i); boolean flag = true; StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer .append("select a.SHIP_PROG_CD from C_TBC02_COIL_COMM a where a.DLIV_DIRNO = '" + param[0] + "'\n"); sta = conn.createStatement(); ResultSet rs = sta.executeQuery(sqlBuffer.toString()); while (rs.next()) { String shipProgCd = rs.getString("SHIP_PROG_CD"); if (!"04".equals(shipProgCd)) { flag = false; break; } } rs.close(); sta.close(); if (flag) { // 取消放入运输表的车厢号和排车顺序号,不能改变运输表的状态 sqlBuffer = new StringBuffer(); sqlBuffer.append("update tbj01_dliv_dir\n"); sqlBuffer.append(" set \n"); sqlBuffer.append(" ALLOC_SEQ = '',\n"); sqlBuffer.append(" TRANS_CAR_NO = '',\n"); sqlBuffer.append(" LANE_TP = '',\n"); sqlBuffer.append(" ENTERANCE_SEQ = '' \n"); sqlBuffer.append(" where DLIV_DIRNO = ? \n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, param[0]); pSta.executeUpdate(); pSta.close(); // 取消钢卷公共表中的车辆号,排车顺序号 sqlBuffer = new StringBuffer(); sqlBuffer.append(" update C_TBC02_COIL_COMM\n"); sqlBuffer.append(" set \n"); sqlBuffer.append(" TRAIN_STEP_NO = '',\n"); sqlBuffer.append(" TRANS_CAR_NO = '',\n"); sqlBuffer.append(" SHIP_PROG_CD = '03' \n"); sqlBuffer.append(" where DLIV_DIRNO =?\n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, param[0]); pSta.executeUpdate(); pSta.close(); // 更新发货表状态标志 sqlBuffer = new StringBuffer(); sqlBuffer.append(" update tbj01_ship_dir\n"); sqlBuffer.append(" set \n"); sqlBuffer.append(" ship_prog_cd = '03' \n"); sqlBuffer.append(" where ship_dirno =?\n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, param[1]); pSta.executeUpdate(); pSta.close(); } } conn.commit(); } catch (SQLException ex) { if(conn != null){ conn.rollback(); } cro.setV_errCode(-1); cro.setV_errMsg("取消装车失败,请重新操作!"); } finally{ if(conn != null && !conn.isClosed()){ conn.close(); } } return cro; } public CoreReturnObject queryTransPlanlt(String shipProgCd, String fromDate, String toDate, String shipDirNo, String curProgCd, String shipCompNm, String dlivTp, String laneTp, String enteranceSeq) throws SQLException { CoreReturnObject cro = null; StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append("SELECT '' CHK,\n"); sqlBuffer.append(" B.SHIP_DIRNO,\n"); sqlBuffer.append(" B.GET_ON_PCD,\n"); sqlBuffer.append(" B.DEST_PCD,\n"); sqlBuffer .append(" (SELECT sm_cfnm FROM TBZ00_COMMCD WHERE LG_CD = 'A01009' AND b.DEST_PCD = SM_CD) DEST_PCD_DESC,\n"); sqlBuffer.append(" B.EXLV_LINE_CD,\n"); sqlBuffer .append(" (SELECT x.SM_CFNM FROM TBZ00_COMMCD x WHERE LG_CD = 'A01015' AND b.EXLV_LINE_CD = SM_CD) EXLV_LINE_CD_DESC,\n"); sqlBuffer .append(" (select CUST_NM FROM TBZ00_CUSTOMER WHERE CUST_CD = b.CUST_CD and REC_TP='01') CUST_NM, \n"); sqlBuffer .append(" (select CUST_NM ORD_NM FROM TBZ00_CUSTOMER WHERE CUST_CD = b.ORD_CUST_CD and REC_TP='02') ORD_NM,\n"); sqlBuffer.append(" B.GET_OFF_PCD,\n"); sqlBuffer.append(" B.DLIV_TP,\n"); sqlBuffer.append(" D.SM_CFNM AS DLIV_TP_NM,\n"); sqlBuffer.append(" B.SHIP_COMP_CD,\n"); sqlBuffer.append(" C.SHIP_COMP_NM SM_CFNM,\n"); sqlBuffer.append(" B.TRAIN_DLIVNO,\n"); sqlBuffer.append(" B.DLIV_DIRNO,\n"); sqlBuffer.append(" NVL(B.CNT,0) AS CNT,\n"); sqlBuffer.append(" NVL(B.ACT_WGT,0) AS ACT_WGT,\n"); sqlBuffer.append(" B.ALLOC_SEQ,\n"); sqlBuffer.append(" B.TRANS_CAR_NO,\n"); sqlBuffer.append(" B.LANE_TP,\n"); sqlBuffer.append(" B.ENTERANCE_SEQ,\n"); sqlBuffer.append(" B.ORD_NO,\n"); sqlBuffer.append(" B.ORD_SEQ,\n"); sqlBuffer.append(" B.SPEC_STL_GRD,\n"); sqlBuffer.append(" B.INSTR_COIL_THK||'*'||B.INSTR_COIL_WTH T_W \n"); sqlBuffer.append(" FROM(SELECT *\n"); sqlBuffer.append(" FROM TBJ01_SHIP_DIR\n"); sqlBuffer.append(" WHERE 1 = 1\n"); sqlBuffer .append(" AND SHIP_PROG_CD = ? -- SHIP_PROG_CD = '03' 发货指示状态\n"); sqlBuffer .append(" AND SHIP_DIRNO BETWEEN NVL(?,'00000101')||'0000' AND NVL(?,'99991231')||'9999'\n"); sqlBuffer.append(" AND SHIP_DIRNO LIKE ?||'%') A \n"); sqlBuffer .append(" ,(SELECT X.*, Y.CNT CNT, Y.ACT_WGT ACT_WGT,Y.ORD_NO,Y.ORD_SEQ,Y.SPEC_STL_GRD,Y.INSTR_COIL_THK,Y.INSTR_COIL_WTH \n"); sqlBuffer.append(" FROM TBJ01_DLIV_DIR X\n"); sqlBuffer.append(" ,(SELECT DLIV_DIRNO\n"); sqlBuffer.append(" , COUNT(*) AS CNT\n"); sqlBuffer.append(" , NVL(SUM(ACT_WGT),0) AS ACT_WGT\n"); sqlBuffer.append(" , MAX(ORD_NO) AS ORD_NO\n"); sqlBuffer.append(" , MAX(ORD_SEQ) AS ORD_SEQ\n"); sqlBuffer.append(" , MAX(SPEC_STL_GRD) AS SPEC_STL_GRD\n"); sqlBuffer.append(" , MAX(INSTR_COIL_THK) AS INSTR_COIL_THK\n"); sqlBuffer.append(" , MAX(INSTR_COIL_WTH) AS INSTR_COIL_WTH\n"); sqlBuffer.append(" FROM C_TBC02_COIL_COMM\n"); sqlBuffer.append(" WHERE 1 = 1\n"); sqlBuffer .append(" AND CUR_PROG_CD like ?||'%' -- CUR_PROG_CD = 'SFB'(物料进度)\n"); sqlBuffer .append(" AND SHIP_DIRNO BETWEEN NVL(?,'00000101')||'0000' AND NVL(?,'99991231')||'9999'\n"); sqlBuffer.append(" GROUP BY DLIV_DIRNO) Y\n"); sqlBuffer.append(" WHERE X.DLIV_DIRNO = Y.DLIV_DIRNO\n"); sqlBuffer.append(" AND X.DLIV_TP LIKE ?||'%'\n"); sqlBuffer.append(" AND NVL(X.LANE_TP,'*') LIKE ?||'%'\n"); sqlBuffer.append(" AND NVL(X.ENTERANCE_SEQ,0) = NVL(?,0)) B\n"); sqlBuffer.append(" ,(SELECT *\n"); sqlBuffer.append(" FROM TBJ00_SHIP_COMP\n"); sqlBuffer.append(" WHERE SHIP_COMP_CD LIKE ?||'%') C\n"); sqlBuffer .append(" ,(SELECT SM_CD, SM_CFNM FROM TBZ00_COMMCD WHERE LG_CD = 'A01012' AND SM_CD LIKE ?||'%') D\n"); sqlBuffer.append(" WHERE A.SHIP_DIRNO = B.SHIP_DIRNO(+)\n"); sqlBuffer.append(" AND B.SHIP_COMP_CD = C.SHIP_COMP_CD(+)\n"); sqlBuffer.append(" AND D.SM_CD = B.DLIV_TP \n"); sqlBuffer.append(" AND B.ISDELETED = 0\n"); sqlBuffer.append(" AND B.ISCANCEL = 0\n"); sqlBuffer.append(" ORDER BY B.ALLOC_SEQ,B.DLIV_DIRNO\n"); cro = this.getDao("KgDao").ExcuteQuery( sqlBuffer.toString(), new Object[] { shipProgCd, fromDate, toDate, shipDirNo, curProgCd, fromDate, toDate, dlivTp, laneTp, enteranceSeq, shipCompNm, dlivTp, }); return cro; } /** * 查询下达排车计划时排车计划对应的钢卷信息 * * @param dlivNo * @return */ public CoreReturnObject queryPlanCoilLt(String dlivNo) throws SQLException { CoreReturnObject cro = null; StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer .append("SELECT substr(A.DLIV_NO,5,8) DLIV_NO,A.COIL_NO,A.COIL_STEEL,A.COIL_HEIGHT||'*'||A.COIL_WIDTH T_W FROM TBJ01_DLIVNO_COIL A \n"); sqlBuffer.append(" WHERE A.DLIV_NO = ? \n"); sqlBuffer.append(" order by a.COIL_NO\n"); cro = this.getDao("KgDao").ExcuteQuery(sqlBuffer.toString(), new Object[] { dlivNo }); return cro; } /** * 查询待装车钢卷 * * @param dlivTp * @return */ public CoreReturnObject queryShipDir(String dlivTp) throws SQLException { CoreReturnObject cro = null; StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append("SELECT '' CHK,\n"); sqlBuffer.append(" A.OLD_SAMPL_NO,\n"); sqlBuffer.append(" A.COIL_NO,\n"); sqlBuffer .append(" DECODE(A.TOT_DEC_GRD,'1','合格','2','次品',' ') TOT_DEC_GRD,\n"); sqlBuffer.append(" a.instr_coil_wth COIL_WTH,\n"); sqlBuffer.append(" a.instr_coil_thk COIL_THK,\n"); sqlBuffer.append(" a.ORD_NO,\n"); sqlBuffer.append(" a.ORD_SEQ,\n"); sqlBuffer.append(" a.spec_stl_grd,\n"); sqlBuffer.append(" A.COIL_OUTDIA,\n"); sqlBuffer.append(" NVL(A.ACT_WGT,0) ACT_WGT,\n"); sqlBuffer.append(" NVL(A.CAL_WGT,0) CAL_WGT,\n"); sqlBuffer.append(" A.CUR_LOAD_LOC,\n"); sqlBuffer.append(" B.DEST_PCD,\n"); sqlBuffer.append(" B.ALLOC_SEQ,\n"); sqlBuffer.append(" B.TRANS_CAR_NO,\n"); sqlBuffer.append(" B.DLIV_DIRNO,\n"); sqlBuffer.append(" B.SHIP_DIRNO,\n"); sqlBuffer .append(" (SELECT sm_cfnm FROM TBZ00_COMMCD WHERE LG_CD = 'A01009' AND b.DEST_PCD = SM_CD) DEST_PCD_DESC,\n"); sqlBuffer .append(" (select CUST_NM FROM TBZ00_CUSTOMER WHERE CUST_CD = B.CUST_CD and REC_TP='01') CUST_NM, \n"); sqlBuffer .append(" (select CUST_NM ORD_NM FROM TBZ00_CUSTOMER WHERE CUST_CD = B.ORD_CUST_CD and REC_TP='02') ORD_NM,\n"); sqlBuffer.append(" A.HCOLOUR_REM \n"); sqlBuffer .append(" FROM C_TBC02_COIL_COMM A,TBJ01_DLIV_DIR B,TBJ01_SHIP_DIR C\n"); sqlBuffer.append(" WHERE A.DLIV_DIRNO = B.DLIV_DIRNO\n"); sqlBuffer.append(" AND B.SHIP_DIRNO = C.SHIP_DIRNO\n"); sqlBuffer.append(" AND A.SHIP_PROG_CD = '04'\n"); sqlBuffer.append(" AND B.DLIV_TP = ? \n"); sqlBuffer.append(" ORDER BY B.ALLOC_SEQ\n"); cro = this.getDao("KgDao").ExcuteQuery(sqlBuffer.toString(), new Object[] { dlivTp }); return cro; } public CoreReturnObject queryShippingResultLt(String dlivTp, String curProgCd, String transCarNo, String dlivDirNo, String shipProgCd, String tranfDTime) throws SQLException { CoreReturnObject cro = null; StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append("SELECT 'N' AS CHK\n"); sqlBuffer.append(" , 'FALSE' CY\n"); sqlBuffer.append(" , A.SHIP_PROG_CD\n"); sqlBuffer.append(" , Z.SM_CFNM AS SHIP_PROG_NM\n"); sqlBuffer.append(" , A.SHIP_DIRNO\n"); sqlBuffer .append(" ,(select CUST_NM FROM TBZ00_CUSTOMER WHERE CUST_CD = (SELECT CUST_CD FROM TBA01_ORD_COMM WHERE ORD_NO = A.ORD_NO) and REC_TP='01') CUST_NM \n"); sqlBuffer .append(" ,(select CUST_NM ORD_NM FROM TBZ00_CUSTOMER WHERE CUST_CD = C.ORD_CUST_CD and REC_TP='02') ORD_NM\n"); sqlBuffer .append(" ,(select SM_CFNM FROM TBZ00_COMMCD WHERE SM_CD = A.ORD_USE_CD and LG_CD = 'A01007') SM_CFNM\n"); sqlBuffer.append(" , A.ORD_USE_CD\n"); sqlBuffer.append(" , A.SPEC_ABBSYM\n"); //sqlBuffer.append(" , A.SPEC_STL_GRD\n"); sqlBuffer.append(" , nvl((SELECT T.DDC_STL_GRD FROM tba01_ord_line T WHERE T.ORD_NO = A.ORD_NO AND T.ORD_SEQ = A.ORD_SEQ and rownum = 1), A.SPEC_STL_GRD) SPEC_STL_GRD \n"); sqlBuffer.append(" , A.DLIV_DIRNO\n"); sqlBuffer.append(" , C.DLIV_TP\n"); sqlBuffer.append(" , C.DLIV_TP_DESC\n"); sqlBuffer.append(" , C.SHIP_COMP_CD\n"); sqlBuffer.append(" , NVL(C.SHIP_COMP_NM,C.SHIP_COMP_CD) SHIP_COMP_NM\n"); sqlBuffer.append(" , C.TRANS_CAR_NO\n"); sqlBuffer.append(" , C.GET_ON_PCD\n"); sqlBuffer.append(" , C.DEST_PCD\n"); sqlBuffer.append(" , C.DEST_PCD_DESC\n"); sqlBuffer.append(" , C.EXLV_LINE_CD\n"); sqlBuffer.append(" , C.EXLV_LINE_CD_DESC\n"); sqlBuffer.append(" , C.GET_OFF_PCD\n"); sqlBuffer.append(" , C.BY_SEA_YN\n"); sqlBuffer.append(" , C.ARRIVAL_CD \n"); sqlBuffer.append(" , C.ARRIVAL_CD_DESC\n"); sqlBuffer.append(" , A.OLD_SAMPL_NO OLD_SAMPL_NO\n"); sqlBuffer.append(" , A.COIL_NO \n"); sqlBuffer.append(" , A.TOT_DEC_GRD \n"); sqlBuffer .append(" , DECODE(A.TOT_DEC_GRD,'1','合格','2','不合格',null) as TOT_DEC_GRD_DESC\n"); sqlBuffer.append(" , NVL(A.ACT_WGT,0) COIL_WGT\n"); sqlBuffer.append(" , NVL(A.CAL_WGT,0) CAL_WGT\n"); sqlBuffer.append(" , A.COIL_OUTDIA\n"); sqlBuffer.append(" , A.SHIP_INVNO\n"); sqlBuffer.append(" , A.CRET_NO\n"); sqlBuffer .append(" , NVL(TO_CHAR(TO_DATE(A.TRNF_DTIME,'YYYYMMDDHH24MISS'),'YYYY-MM-DD HH24:MI:SS'),'-') AS TRNF_DTIME\n"); sqlBuffer.append(" ,'3' AS COIL_STAT\n"); sqlBuffer.append(" ,'DFF' AS CUR_PROG_CD\n"); sqlBuffer.append(" ,'UIJ050010' AS CUR_PROG_CD_PGM\n"); sqlBuffer.append(" , A.CUR_PROG_CD AS BEF_PROG_CD\n"); sqlBuffer.append(" , A.CUR_PROG_CD_DTIME AS BEF_PROG_CD_DTIME\n"); sqlBuffer.append(" , A.CUR_PROG_CD_PGM AS BEF_PROG_CD_PGM\n"); sqlBuffer.append(" , A.ORD_NO, A.ORD_SEQ\n"); sqlBuffer.append(" ,A.MATLQLTY_DEC_GRD \n"); sqlBuffer .append(" , DECODE(A.MATLQLTY_DEC_GRD,'1','合格','2','不合格',null) as MATLQLTY_DEC_GRD_DESC\n"); sqlBuffer.append(" , A.COIL_THK||'*'||COIL_WTH C_W\n"); sqlBuffer.append(" , A.INSTR_COIL_THK||'*'||A.INSTR_COIL_WTH T_W\n"); sqlBuffer.append(" , TO_CHAR(SYSDATE,'YYYY-MM-DD') SYS_TIME\n"); sqlBuffer.append(" , A.CZD_WGT\n"); sqlBuffer .append(" , DECODE(A.TRNF_SHIFT,'1','早','2','中','3','晚') TRNF_SHIFT\n"); sqlBuffer .append(" , DECODE(A.TRNF_GROUP,'A','甲','B','乙','C','丙','D','丁') TRNF_GROUP\n"); sqlBuffer.append(" , A.TRNF_USE_TIME\n"); sqlBuffer.append(" ,A.HCOLOUR_REM\n"); sqlBuffer.append(" ,A.SLAB_NO --板加添加,以下相同\n"); sqlBuffer .append(" ,(SELECT T.DEL_TO_DATE FROM TBE02_ORD_PRC T WHERE T.ORD_NO = A.ORD_NO AND T.ORD_SEQ = A.ORD_SEQ) DEVLMT_DTIME\n"); sqlBuffer.append(" ,A.INSTR_COIL_THK\n"); sqlBuffer.append(" ,A.INSTR_COIL_WTH\n"); sqlBuffer.append(" ,A.INSTR_COIL_LEN\n"); sqlBuffer.append(" ,A.INSTR_COIL_OUTDIA\n"); sqlBuffer.append(" ,A.INSTR_COIL_INDIA\n"); sqlBuffer.append(" ,A.INSTR_COIL_WGT\n"); sqlBuffer.append(" ,C.SM_CD\n"); sqlBuffer .append(" ,(select CUST_CD ORD_CD FROM TBZ00_CUSTOMER WHERE CUST_CD = C.ORD_CUST_CD and REC_TP='02') ORD_CD \n"); sqlBuffer.append(" ,A.COIL_LEN\n"); sqlBuffer.append(" ,A.COIL_INDIA\n"); sqlBuffer.append(" ,A.COIL_THK\n"); sqlBuffer.append(" ,A.COIL_WTH\n"); sqlBuffer.append(" ,A.PRODNM_CD\n"); sqlBuffer.append(" ,A.PATH_MILL_CD\n"); sqlBuffer.append(" ,A.INGR_DEC_DTIME --成份判定\n"); sqlBuffer.append(" ,A.MATLQLTY_DEC_DTIME --材质判定\n"); sqlBuffer.append(" ,A.EXTSHAPE_DEC_DTIME --外观判定\n"); sqlBuffer.append(" ,A.TOT_DEC_DTIME --综合判定时间\n"); sqlBuffer.append(" ,A.INGR_DEC_GRD\n"); sqlBuffer.append(" ,A.SIZE_DEC_RST\n"); sqlBuffer.append(" ,A.EXTSHAPE_DEC_GRD\n"); sqlBuffer.append(" ,A.WGT_DEC_RST\n"); sqlBuffer.append(" ,A.EXTSHAPE_QUALITY\n"); //新加字段 包装等级 sqlBuffer.append(",(SELECT C.SM_CFNM FROM TBZ00_COMMCD C WHERE C.LG_CD = 'A01010' AND SM_CD = A.PACKAGE_LEVEL AND ROWNUM=1) PACKING_GRADE \n"); sqlBuffer.append(" ,A.CRK_CD3\n"); sqlBuffer.append(" ,A.CRK_CD1\n"); sqlBuffer.append(" ,A.CRK_CD2\n"); sqlBuffer.append(" ,A.CRK_CD3\n"); sqlBuffer.append(" ,A.CRK_CD4\n"); sqlBuffer.append(" ,A.CRK_CD5\n"); // sqlBuffer.append(" // ,DECODE(NVL(A.PACKAGE_LEVEL,1),'2','22','3','110','4','120','0') // PKG_WGT\n"); sqlBuffer.append(" FROM C_TBC02_COIL_COMM A\n"); sqlBuffer.append(" , TBJ01_SHIP_DIR B\n"); sqlBuffer .append(" ,(SELECT X.*, Y.SHIP_COMP_NM, Z.SM_CFNM AS DLIV_TP_DESC\n"); sqlBuffer.append(" , Z1.SM_CFNM AS DEST_PCD_DESC\n"); sqlBuffer.append(" , Z2.SM_CFNM AS EXLV_LINE_CD_DESC\n"); sqlBuffer.append(" , Z3.SM_CFNM AS ARRIVAL_CD_DESC\n"); sqlBuffer.append(" , Z1.SM_CD --板加 目的地代码\n"); sqlBuffer.append(" FROM TBJ01_DLIV_DIR X\n"); sqlBuffer.append(" , TBJ00_SHIP_COMP Y\n"); sqlBuffer .append(" ,(SELECT * FROM TBZ00_COMMCD WHERE LG_CD = 'A01012') Z\n"); sqlBuffer .append(" ,(SELECT * FROM TBZ00_COMMCD WHERE LG_CD = 'A01009') Z1\n"); sqlBuffer .append(" ,(SELECT * FROM TBZ00_COMMCD WHERE LG_CD = 'A01015') Z2 \n"); sqlBuffer .append(" ,(SELECT * FROM TBZ00_COMMCD WHERE LG_CD = 'A01009') Z3\n"); sqlBuffer.append(" WHERE 1 = 1\n"); sqlBuffer.append(" AND X.SHIP_COMP_CD = Y.SHIP_COMP_CD(+)\n"); sqlBuffer.append(" AND X.DLIV_TP = Z.SM_CD(+)\n"); sqlBuffer.append(" AND X.DEST_PCD = Z1.SM_CD(+)\n"); sqlBuffer.append(" AND X.EXLV_LINE_CD = Z2.SM_CD(+)\n"); sqlBuffer.append(" AND X.ARRIVAL_CD = Z3.SM_CD(+)\n"); sqlBuffer.append(" AND X.DLIV_TP LIKE ?||'%') C\n"); sqlBuffer .append(" ,(SELECT * FROM TBZ00_COMMCD WHERE LG_CD = 'J01005' AND SM_CD IN ('05','06','07','08','09')) Z\n"); sqlBuffer.append(" WHERE 1 = 1\n"); sqlBuffer.append(" AND A.SHIP_DIRNO = B.SHIP_DIRNO\n"); sqlBuffer.append(" AND A.DLIV_DIRNO = C.DLIV_DIRNO\n"); sqlBuffer.append(" AND A.SHIP_PROG_CD = Z.SM_CD(+)\n"); sqlBuffer.append(" AND A.SHIP_PROG_CD IN ('06','07','08')\n"); sqlBuffer.append(" AND A.CUR_PROG_CD LIKE ?||'%'\n"); sqlBuffer.append(" AND A.TRANS_CAR_NO||'&' LIKE ?||'%'\n"); sqlBuffer.append(" AND A.DLIV_DIRNO LIKE ?||'%'\n"); sqlBuffer.append(" AND A.SHIP_PROG_CD LIKE ?||'%'\n"); sqlBuffer.append(" AND A.TRNF_DTIME||'&' LIKE ?||'%'\n"); sqlBuffer.append(" ORDER BY A.SHIP_DIRNO, A.DLIV_DIRNO\n"); cro = this.getDao("KgDao").ExcuteQuery( sqlBuffer.toString(), new Object[] { dlivTp, curProgCd, transCarNo, dlivDirNo, shipProgCd, tranfDTime }); System.out.println(cro); return cro; } /** * 生成发货实绩 * * @param trnfShift * @param trnfGroup * @param trnfRegId * @param trnfDTime * @param czdWgt * @param params * @return * @throws SQLException */ public CoreReturnObject saveShippingResultLt(String trnfShift, String trnfGroup, String trnfRegId, String trnfDTime, String czdWgt, ArrayList params) throws SQLException { CoreReturnObject cro = new CoreReturnObject(); Connection conn = null; Statement sta = null; ArrayList params1 = new ArrayList(); ArrayList list=new ArrayList(); try { conn = this.getDao("KgDao").getConnection(); conn.setAutoCommit(false); // 修改钢卷发运状态 updateCoilProgStatus(conn,trnfShift, trnfGroup, trnfRegId, trnfDTime, params); // 调用进程管理进程整理 // 修改钢卷表发运状态及发运相关信息 、发运表发运状态 updateShipProgStatus(conn,czdWgt, params); // for (int i = 0; i < params.size(); i++) { // String[] param = params.get(i); // String dlno=param[1]; // String sql2 = "select * from TBB01_CARGOCN_DATA a where DLIV_DIRNO = '" // + param[1] + "' "; // sta = conn.createStatement(); // ResultSet rs = sta.executeQuery(sql2); // while (rs.next()) { // list.add(i, dlno); // String sql4 = XmlSqlParsersFactory.getSql("UIJ030030_cargocn_01.delete"); // this.getDao("KgDao").ExcuteNonQuery(sql4,new Object[] { dlno }); // } // rs.close(); // sta.close(); // } // //保存发货明细状态的同时把钢卷数据保存到货运中国中间表去 // saveCargocnData(params,czdWgt,trnfDTime,list); conn.commit(); } catch (Exception ex) { if(conn != null){ conn.rollback(); } cro.setV_errCode(-1); cro.setV_errMsg("发货实绩生成失败,请重新操作!"); } finally{ if(conn != null && !conn.isClosed()){ conn.close(); } } return cro; } /** * 修改钢卷发运状态 * * @param trnfShift * @param trnfGroup * @param trnfRegId * @param trnfDTime * @param params * @return * @throws SQLException */ private void updateCoilProgStatus(Connection conn,String trnfShift, String trnfGroup, String trnfRegId, String trnfDTime, ArrayList params) throws SQLException { PreparedStatement pSta = null; String flag=null; String trnftime ; Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); trnftime = sdf.format(d); for (int i = 0; i < params.size(); i++) { String[] param = params.get(i); // 更新钢卷公共表发货状态 StringBuffer updSql1 = new StringBuffer(); updSql1.append("UPDATE C_TBC02_COIL_COMM\n"); updSql1.append(" SET COIL_STAT = ?\n"); updSql1.append(" , CUR_PROG_CD = ?\n"); updSql1 .append(" , CUR_PROG_CD_DTIME = TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS')\n"); updSql1.append(" , CUR_PROG_CD_PGM = ?\n"); updSql1.append(" , BEF_PROG_CD = ?\n"); updSql1.append(" , BEF_PROG_CD_DTIME = ?\n"); updSql1.append(" , BEF_PROG_CD_PGM = ?\n"); updSql1.append(" , TRANS_CAR_NO = ?\n"); updSql1.append(" , TRNF_SHIFT = ?\n"); updSql1.append(" , TRNF_GROUP = ?\n"); updSql1.append(" , TRNF_REG = ?\n"); updSql1.append(" , TRNF_DTIME = ?\n"); updSql1 .append(" , OUT_YARD_KIND = decode(substr(nvl(BEF_LOAD_LOC,'0'),0,1),'3','2','4','2','5','3',decode(length(OLD_SAMPL_NO),17,'3','2'))\n"); updSql1.append(" --记录修改前重量\n"); // updSql1.append(" , BEF_ACT_WGT = ACT_WGT\n"); updSql1.append(" , ACT_WGT = ?\n"); updSql1.append(" WHERE OLD_SAMPL_NO = ?\n"); pSta = conn.prepareStatement(updSql1.toString()); pSta.setString(1, param[25]); pSta.setString(2, param[26]); pSta.setString(3, param[27]); pSta.setString(4, param[19]); pSta.setString(5, param[20]); pSta.setString(6, param[21]); pSta.setString(7, param[2]); pSta.setString(8,trnfShift); pSta.setString(9, trnfGroup); pSta.setString(10, trnfRegId); pSta.setString(11, trnfDTime); pSta.setString(12, param[12]); //pSta.setString(13, trnftime); pSta.setString(13, param[10]); pSta.executeUpdate(); pSta.close(); //保持同一指示号下面所有卷操作时间一致 20190411 StringBuffer updSql3 = new StringBuffer(); updSql3.append("UPDATE C_TBC02_COIL_COMM\n"); updSql3.append(" SET TRNF_USE_TIME = ?\n"); updSql3.append(" WHERE DLIV_DIRNO = ?\n"); pSta = conn.prepareStatement(updSql3.toString()); pSta.setString(1, trnftime); pSta.setString(2, param[1]); pSta.executeUpdate(); pSta.close(); //添加记录 String sql = XmlSqlParsersFactory.getSql("UIL010020_02_CALL.CALL"); if(!param[10].substring(14,15).equals("0")){ flag="C"; } else{ flag="L"; } CallableStatement cstm = conn.prepareCall(sql); cstm.setString(1,flag); cstm.setString(2,param[10]); cstm.setString(3,trnfRegId); cstm.setString(4,"明细打印"); cstm.setString(5,"UIJ050030"); cstm.setString(6,"明细打印后"); cstm.registerOutParameter(7,Types.VARCHAR); cstm.execute(); cstm.close(); // 更新发运表车辆号 StringBuffer updSql2 = new StringBuffer(); updSql2.append("UPDATE tbj01_dliv_dir\n"); updSql2.append(" SET TRANS_CAR_NO = ?\n"); updSql2.append(" WHERE DLIV_DIRNO = ?\n"); pSta = conn.prepareStatement(updSql2.toString()); pSta.setString(1, param[2]); pSta.setString(2, param[1]); pSta.executeUpdate(); pSta.close(); } } /** * 修改钢卷表发运状态及发运相关信息 * * @param czdWgt * @param params * @throws SQLException */ private void updateShipProgStatus(Connection conn,String czdWgt, ArrayList params) throws SQLException { PreparedStatement pSta = null; Statement sta = null; //double dczdWgt = new Double(czdWgt); //dczdWgt=dczdWgt * params.size(); for (int i = 0; i < params.size(); i++) { String[] param = params.get(i); // 更新钢卷公共表发运状态及发运相关信息 StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append("UPDATE C_TBC02_COIL_COMM\n"); sqlBuffer.append(" SET SHIP_PROG_CD = ?\n"); sqlBuffer.append(" ,TRANS_CAR_NO = ?\n"); sqlBuffer.append(" ,ACT_WGT = ?\n"); sqlBuffer.append(" ,CZD_WGT = ? \n"); sqlBuffer.append(" WHERE OLD_SAMPL_NO = ?\n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, param[17]); pSta.setString(2, param[2]); pSta.setString(3, param[12]); pSta.setString(4, czdWgt); pSta.setString(5, param[10]); pSta.executeUpdate(); pSta.close(); } for (int i = 0; i < params.size(); i++) { String[] param = params.get(i); // 查询钢卷公共表中SHIP_PROG_CD状态,看是否全部改变 boolean flag = true; String sql = "select a.SHIP_PROG_CD from C_TBC02_COIL_COMM a where a.ship_dirno = '" + param[0] + "' "; sta = conn.createStatement(); ResultSet rs = sta.executeQuery(sql); while (rs.next()) { String shipProgCd = rs.getString("SHIP_PROG_CD"); //&& !"09".equals(shipProgCd) if (!"07".equals(shipProgCd) && !"08".equals(shipProgCd) ) { flag = false; } } rs.close(); sta.close(); // 判断同一发货指示下的钢卷是否全部保存,如果没有的话不能改变发货指示的状态 if (flag) { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append("UPDATE TBJ01_SHIP_DIR\n"); sqlBuffer.append(" SET SHIP_PROG_CD = ?\n"); sqlBuffer.append(" WHERE SHIP_DIRNO = ?\n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, param[17]); pSta.setString(2, param[0]); pSta.executeUpdate(); pSta.close(); } } } /** * 保存发货明细状态的同时把钢卷数据保存到货运中国中间表去 * @param params public void saveCargocnData(ArrayList params,String czdWgt,String trnfDTime,ArrayList list) { try { for (int i = 0; i < params.size(); i++) { String[] param = params.get(i); String sql3 = XmlSqlParsersFactory.getSql("UIJ030030_cargocn.select"); String flat="1"; ArrayList coilList = (ArrayList) this.getDao("KgDao").ExcuteQueryReturnList(sql3,new Object[]{param[10]}); //若表中存在该钢卷则删除 if(null != coilList && 0 != coilList.size()){ String sql4 = XmlSqlParsersFactory.getSql("UIJ030030_cargocn.delete"); this.getDao("KgDao").ExcuteNonQuery(sql4, new Object[]{param[10]}); flat="0"; } String sql2 = XmlSqlParsersFactory.getSql("UIJ030030_cargocn.insert"); Object[] param2 = new Object[25]; param2[0] = param[10]; //真实钢卷号 param2[1] = param[1]; //发运指示号 param2[2] = param[18]; //牌号 param2[3] = param[2]; //车牌号 param2[4] = param[12]; //重量 param2[5] = trnfDTime; //发货时间 param2[6] = param[33]; //收货单位 param2[7] = param[34]; //到站 param2[8] = param[32]; //合同单位 String SHIP_COMP = param[35]; if(StringUtils.isEmpty(SHIP_COMP)) SHIP_COMP = param[24]; param2[9] = SHIP_COMP; //运输公司 param2[10] = param[36]; //产品名称 param2[11] = "新余市"; //发货城市 param2[12] = "冷轧厂"; //发货地点 param2[13] = 1; //订单类型 //通过到站地点从产销数据库查收货城市、收货人、电话 String receiveCity = param[34]; String dlivno = param[1]; // String sql5 = "SELECT CX.UNLOADDOCK,CX.SHR,CX.SHRDH FROM SEL_STATIONINFO@XGCX CX WHERE CX.STATIONNAME LIKE '" // + receiveCity + "%' "; String sql5="select a.UNLOADDOCK, a.SHR, a.SHRDH from sel_stationinfo a where a.STATIONCODE = (select DEST_PCD from tbj01_dliv_dir b where b.DLIV_DIRNO='"+dlivno+"' and rownum = 1)"; String receiveNM = ""; String receivePhone = ""; ResultSet rs = this.getDao("KgDao").ExceuteQueryForResultSet(sql5); if (rs.next()) { receiveNM = rs.getString("SHR"); //收货人 receivePhone = rs.getString("SHRDH"); //收货人电话 if(StringUtils.isEmpty(receiveNM)) receiveNM=""; if(StringUtils.isEmpty(receivePhone)) receivePhone=""; if(!StringUtils.isEmpty(rs.getString("UNLOADDOCK"))) receiveCity = rs.getString("UNLOADDOCK"); //收货城市 } this.getDao("KgDao").closeRs(rs); param2[14] = receiveCity; //收货城市 param2[15] = receiveNM; //收货联系人 param2[16] = receivePhone; //收货联系人电话 param2[17] = "6"; //未发送状态 param2[18] = "LZMES_UIJ050010"; //程序id param2[19] = param[28]; //操作人 param2[20]= param[29]; // 运输方式 param2[21]= "A"; // 修改标示 param2[22]= param[22]; // 合同号 String sql4 = XmlSqlParsersFactory.getSql("UIJ030030_cargocn.dlivselect"); ArrayList dlivList = (ArrayList) this.getDao("KgDao").ExcuteQueryReturnList(sql4,new Object[]{param[1]}); //若表中存在该钢卷则删除 if(null != dlivList && 0 != dlivList.size()) { param2[23]="0"; } else { param2[23]= czdWgt; // 草支垫扣重 } param2[24]= param[37]; // 包装扣重 this.getDao("KgDao").ExcuteNonQuery(sql2, param2); if("0".equals(flat)){ String sql = XmlSqlParsersFactory.getSql("UIJ030030_cargocn_01.update"); this.getDao("KgDao").ExcuteNonQuery(sql, new Object[]{param2[1]}); } } if(!list.isEmpty()) { for (int i = 0; i < list.size(); i++) { String sql = XmlSqlParsersFactory.getSql("UIJ030030_cargocn_02.update"); this.getDao("KgDao").ExcuteNonQuery(sql, new Object[]{list.get(i)}); } } } catch (Exception e) { e.printStackTrace(); } } */ public void saveCargocnData(Connection conn,ArrayList params,String czdWgt,String trnfDTime,ArrayList list) { try { for (int i = 0; i < params.size(); i++) { String[] param = params.get(i); Double wgt=Double.parseDouble(param[12]); String sql = XmlSqlParsersFactory.getSql("UIJ030030_12.CALL"); CallableStatement cstm = conn.prepareCall(sql); cstm.setString(1, "1");//标志 cstm.setString(2, param[10]); cstm.setString(3, param[1]); cstm.setString(4, param[18]); cstm.setString(5, param[2]); cstm.setString(6, wgt.toString()); cstm.setString(7, trnfDTime); cstm.setString(8, czdWgt); cstm.setString(9, param[37]); cstm.setString(10, "L"); cstm.setString(11, param[28]); cstm.execute(); cstm.close(); } } catch (Exception e) { e.printStackTrace(); } } /** * 打印发货明细后修改相关状态 * * @param trnfShift * @param trnfGroup * @param trnfRegId * @param trnfDTime * @param czdWgt * @param params * @return * @throws SQLException */ public CoreReturnObject printShippingResultLt(String trnfShift, String trnfGroup, String trnfRegId, String trnfDTime, String czdWgt, ArrayList params) throws SQLException { CoreReturnObject cro = new CoreReturnObject(); ArrayList params1 = new ArrayList(); Connection conn = null; Statement sta = null; int a=0; ArrayList list=new ArrayList(); try { conn = this.getDao("KgDao").getConnection(); conn.setAutoCommit(false); UIJ030060 uij030060 = new UIJ030060(); updateInvoiceInfoOfDelivery(conn,params); // 修改钢卷表发运状态及发运相关信息 、发运表发运状态 //updateShipProgStatus(conn, czdWgt, params); updateShipProgStatusOfPrint(conn,czdWgt, params); for (int i = 0; i < params.size(); i++) { String[] param = params.get(i); String coilno=param[10]; //调用存货异动点存储过程 ProduceFactory PD= new ProduceFactory(); //PD.ErpDataCover("LTCOIL",coilno,"11AC","1","O",trnfRegId,"连退综判"); PD.ErpDataCover("LTCOIL",coilno,"69A","1","O",trnfRegId,"连退发货"); } /* //保存发货明细状态的同时把钢卷数据保存到货运中国中间表去 for (int i = 0; i < params.size(); i++) { String[] param = params.get(i); String coilno=param[10]; String sql2 = "select * from TBB01_CARGOCN_DATA a where COIL_NO = '" + param[10] + "' "; sta = conn.createStatement(); ResultSet rs = sta.executeQuery(sql2); while (rs.next()) { list.add(a, coilno); if(a==0) { String sql = XmlSqlParsersFactory.getSql("UIJ030030_cargocn_03.update"); this.getDao("KgDao").ExcuteNonQuery(sql, new Object[]{param[1]}); } String sql4 = XmlSqlParsersFactory.getSql("UIJ030030_cargocn.delete"); this.getDao("KgDao").ExcuteNonQuery(sql4,new Object[] { coilno }); a++; } rs.close(); sta.close(); } */ //数据发送到优特钢 // for (int i = 0; i < params.size(); i++) { // String[] param = params.get(i); // // if("20180703S115".equals(param[1])) { // params1.add(params.get(i)); // } // } // uij030060.saveYouTeTbcData(params1); saveCargocnData(conn,params,czdWgt,trnfDTime,list); //数据发送到铁前 addshipdetail(conn,czdWgt,params); //数据发送到中冶新材 addzycoil(conn,params); conn.commit(); } catch (Exception ex) { if(conn != null){ conn.rollback(); } cro.setV_errCode(-1); cro.setV_errMsg("发货实绩生成失败,请重新操作!"); } finally{ if(conn != null && !conn.isClosed()){ conn.close(); } } return cro; } private void addshipdetail(Connection conn,String czdWgt,ArrayList params) throws SQLException { //boolean flag = true; for (int i = 0; i < params.size(); i++) { String[] param = params.get(i); String rtMsg = ""; Double wgt=Double.parseDouble(param[12])/1000; String sql = XmlSqlParsersFactory.getSql("UIJ030030_09.CALL"); CallableStatement cstm = conn.prepareCall(sql); cstm.setString(1, "1");//标志 cstm.setString(2, param[1]); cstm.setString(3, param[2]); cstm.setString(4, param[18]); cstm.setString(5, param[30]); cstm.setString(6, "1"); cstm.setString(7, wgt.toString()); cstm.setString(8, czdWgt); cstm.setString(9, "4001LT1"); cstm.setString(10, "连退线"); //cstm.registerOutParameter(10, java.sql.Types.VARCHAR); cstm.execute(); //rtMsg = cstm.getString(10); cstm.close(); // return rtMsg; } } //发送中冶新材数据 20150710 private void addzycoil(Connection conn,ArrayList params) throws SQLException { //boolean flag = true; for (int i = 0; i < params.size(); i++) { String[] param = params.get(i); String rtMsg = ""; if(param[31].equals("224902")||param[31].equals("243187")){ //中冶新材客户代码 String sql = XmlSqlParsersFactory.getSql("UIJ030030_11.CALL"); CallableStatement cstm = conn.prepareCall(sql); cstm.setString(1, param[10]);//钢卷号 cstm.execute(); cstm.close(); } } } private void updateInvoiceInfoOfDelivery(Connection conn,ArrayList params) throws SQLException { PreparedStatement pSta = null; StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append("UPDATE TBJ01_DLIV_DIR\n"); sqlBuffer.append(" SET TRANS_CAR_NO = ?\n"); sqlBuffer.append(" , INV_PRNCNT = NVL(INV_PRNCNT,0) + 1\n"); sqlBuffer.append(" WHERE DLIV_DIRNO = ?\n"); String dlivDirNo = ""; for (int i = 0; i < params.size(); i++) { String[] param = params.get(i); if (i > 0) { if (dlivDirNo.equals(param[1])) { continue; } else { pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, param[2]); pSta.setString(2, param[1]); pSta.executeUpdate(); pSta.close(); } } else { pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, param[2]); pSta.setString(2, param[1]); pSta.executeUpdate(); pSta.close(); } dlivDirNo = param[1]; } } /** * 修改钢卷表发运状态及发运相关信息 * * @param czdWgt * @param params * @throws SQLException */ private void updateShipProgStatusOfPrint(Connection conn,String czdWgt, ArrayList params) throws SQLException { PreparedStatement pSta = null; Statement sta = null; for (int i = 0; i < params.size(); i++) { String[] param = params.get(i); // 更新钢卷公共表发运状态及发运相关信息 StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append("UPDATE C_TBC02_COIL_COMM\n"); sqlBuffer.append(" SET SHIP_PROG_CD = ?\n"); sqlBuffer.append(" ,TRANS_CAR_NO = ?\n"); sqlBuffer.append(" ,ACT_WGT = ?\n"); sqlBuffer.append(" ,CZD_WGT = ? \n"); sqlBuffer.append(" WHERE OLD_SAMPL_NO = ?\n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, param[17]); pSta.setString(2, param[2]); pSta.setString(3, param[12]); pSta.setString(4, czdWgt); pSta.setString(5, param[10]); pSta.executeUpdate(); pSta.close(); } for (int i = 0; i < params.size(); i++) { String[] param = params.get(i); // 查询钢卷公共表中SHIP_PROG_CD状态,看是否全部改变 boolean flag = true; String sql = "select a.SHIP_PROG_CD from C_TBC02_COIL_COMM a where a.ship_dirno = '" + param[0] + "' "; sta = conn.createStatement(); ResultSet rs = sta.executeQuery(sql); while (rs.next()) { String shipProgCd = rs.getString("SHIP_PROG_CD"); // && !"09".equals(shipProgCd) if (!"08".equals(shipProgCd)) { flag = false; } } rs.close(); sta.close(); // 判断同一发货指示下的钢卷是否全部保存,如果没有的话不能改变发货指示的状态 if (flag) { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append("UPDATE TBJ01_SHIP_DIR\n"); sqlBuffer.append(" SET SHIP_PROG_CD = ?\n"); sqlBuffer.append(" WHERE SHIP_DIRNO = ?\n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, param[17]); pSta.setString(2, param[0]); pSta.executeUpdate(); pSta.close(); } } } /** * 查询发运计划信息 * * @param fromDate * @param toDate * @param dlivTp * @param dlivDirNo * @param isCancel * @return * @throws SQLException */ public CoreReturnObject queryDlivPlanLt(String fromDate, String toDate, String dlivTp, String dlivDirNo, String isCancel) throws SQLException { CoreReturnObject cro = null; StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append("SELECT '' CHK,\n"); sqlBuffer.append(" B.SHIP_DIRNO,\n"); sqlBuffer.append(" B.GET_ON_PCD,\n"); sqlBuffer.append(" B.DEST_PCD,\n"); sqlBuffer .append(" (SELECT sm_cfnm FROM TBZ00_COMMCD WHERE LG_CD = 'A01009' AND b.DEST_PCD = SM_CD) DEST_PCD_DESC,\n"); sqlBuffer.append(" B.EXLV_LINE_CD,\n"); sqlBuffer .append(" (SELECT x.SM_CFNM FROM TBZ00_COMMCD x WHERE LG_CD = 'A01015' AND b.EXLV_LINE_CD = SM_CD) EXLV_LINE_CD_DESC,\n"); sqlBuffer .append(" (select CUST_NM FROM TBZ00_CUSTOMER WHERE CUST_CD = b.CUST_CD and REC_TP='01') CUST_NM, \n"); sqlBuffer .append(" (select CUST_NM ORD_NM FROM TBZ00_CUSTOMER WHERE CUST_CD = b.ORD_CUST_CD and REC_TP='02') ORD_NM,\n"); sqlBuffer.append(" B.GET_OFF_PCD,\n"); // sqlBuffer.append(" B.DLIV_TP,\n"); sqlBuffer.append(" D.SM_CFNM AS DLIV_TP_NM,\n"); // sqlBuffer.append(" B.SHIP_COMP_CD,\n"); sqlBuffer.append(" C.SHIP_COMP_NM SM_CFNM,\n"); sqlBuffer.append(" B.TRAIN_DLIVNO,\n"); sqlBuffer.append(" B.DLIV_DIRNO,\n"); sqlBuffer.append(" NVL(B.CNT,0) AS CNT,\n"); sqlBuffer.append(" NVL(B.ACT_WGT,0) AS ACT_WGT,\n"); sqlBuffer.append(" B.ALLOC_SEQ,\n"); sqlBuffer.append(" B.TRANS_CAR_NO,\n"); sqlBuffer.append(" B.LANE_TP,\n"); sqlBuffer.append(" B.ENTERANCE_SEQ,\n"); sqlBuffer.append(" B.ORD_NO,\n"); sqlBuffer.append(" B.ORD_SEQ,\n"); sqlBuffer.append(" B.SPEC_STL_GRD,\n"); sqlBuffer.append(" B.INSTR_COIL_THK||'*'||B.INSTR_COIL_WTH T_W,\n"); sqlBuffer.append(" ISCANCEL \n"); sqlBuffer.append(" FROM(SELECT *\n"); sqlBuffer.append(" FROM TBJ01_SHIP_DIR\n"); sqlBuffer.append(" WHERE 1 = 1\n"); sqlBuffer.append(" AND SHIP_PROG_CD = '03'\n"); sqlBuffer .append(" AND SHIP_DIRNO BETWEEN NVL(?,'00000101')||'0000' AND NVL(?,'99991231')||'9999'\n"); sqlBuffer.append(" AND SHIP_DIRNO LIKE ''||'%') A \n"); sqlBuffer .append(" ,(SELECT X.*, Y.CNT CNT, Y.ACT_WGT ACT_WGT,Y.ORD_NO,Y.ORD_SEQ,Y.SPEC_STL_GRD,Y.INSTR_COIL_THK,Y.INSTR_COIL_WTH \n"); sqlBuffer.append(" FROM TBJ01_DLIV_DIR X\n"); sqlBuffer.append(" ,(SELECT DLIV_DIRNO\n"); sqlBuffer.append(" , COUNT(*) AS CNT\n"); sqlBuffer.append(" , NVL(SUM(ACT_WGT),0) AS ACT_WGT\n"); sqlBuffer.append(" , MAX(ORD_NO) AS ORD_NO\n"); sqlBuffer.append(" , MAX(ORD_SEQ) AS ORD_SEQ\n"); sqlBuffer.append(" , MAX(SPEC_STL_GRD) AS SPEC_STL_GRD\n"); sqlBuffer.append(" , MAX(INSTR_COIL_THK) AS INSTR_COIL_THK\n"); sqlBuffer.append(" , MAX(INSTR_COIL_WTH) AS INSTR_COIL_WTH\n"); sqlBuffer.append(" FROM C_TBC02_COIL_COMM\n"); sqlBuffer.append(" WHERE 1 = 1\n"); sqlBuffer.append(" AND CUR_PROG_CD like 'DFB'||'%'\n"); sqlBuffer .append(" AND SHIP_DIRNO BETWEEN NVL(?,'00000101')||'0000' AND NVL(?,'99991231')||'9999'\n"); sqlBuffer.append(" GROUP BY DLIV_DIRNO) Y\n"); sqlBuffer.append(" WHERE X.DLIV_DIRNO = Y.DLIV_DIRNO\n"); sqlBuffer.append(" AND X.DLIV_TP LIKE ?||'%'\n"); sqlBuffer.append(" AND NVL(X.LANE_TP,'*') LIKE ''||'%'\n"); sqlBuffer.append(" AND NVL(X.ENTERANCE_SEQ,0) = NVL('',0)) B\n"); sqlBuffer.append(" ,(SELECT *\n"); sqlBuffer.append(" FROM TBJ00_SHIP_COMP\n"); sqlBuffer.append(" WHERE SHIP_COMP_CD LIKE ''||'%') C\n"); sqlBuffer .append(" ,(SELECT SM_CD, SM_CFNM FROM TBZ00_COMMCD WHERE LG_CD = 'A01012' AND SM_CD LIKE ?||'%') D\n"); sqlBuffer.append(" WHERE A.SHIP_DIRNO = B.SHIP_DIRNO(+)\n"); sqlBuffer.append(" AND B.SHIP_COMP_CD = C.SHIP_COMP_CD(+)\n"); sqlBuffer.append(" AND D.SM_CD = B.DLIV_TP \n"); sqlBuffer.append(" AND B.ISDELETED = 0\n"); sqlBuffer.append(" AND B.ISCANCEL = ?\n"); sqlBuffer.append(" AND B.DLIV_DIRNO LIKE ?||'%'\n"); sqlBuffer.append(" ORDER BY B.ALLOC_SEQ,B.DLIV_DIRNO \n"); cro = this.getDao("KgDao").ExcuteQuery( sqlBuffer.toString(), new Object[] { fromDate, toDate, fromDate, toDate, dlivTp, dlivTp, isCancel, dlivDirNo }); return cro; } /** * 发运计划回退 * * @param regId * @param params * @return * @throws SQLException */ public CoreReturnObject returnShipDirLt(String regId, ArrayList params) throws SQLException { CoreReturnObject cro = new CoreReturnObject(); StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append("update TBJ01_DLIV_DIR a\n"); sqlBuffer.append(" set A.RETURN_GED = ?,\n"); sqlBuffer .append("A.RETURN_DTIME = TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'),\n"); sqlBuffer.append(" A.ISCANCEL = '1',\n"); sqlBuffer.append(" A.DLIV_PROG_CD = '02' \n"); sqlBuffer.append(" WHERE A.DLIV_DIRNO = ? \n"); Connection conn = null; PreparedStatement pSta = null; try { conn = this.getDao("KgDao").getConnection(); conn.setAutoCommit(false); for (int i = 0; i < params.size(); i++) { String dlivDirNo = params.get(i); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, regId); pSta.setString(2, dlivDirNo); pSta.executeUpdate(); pSta.close(); } conn.commit(); } catch (Exception ex) { if(conn != null){ conn.rollback(); } cro.setV_errCode(-1); cro.setV_errMsg("发运计划回退失败!"); }finally{ if(conn != null && !conn.isClosed()){ conn.close(); } } return cro; } /** * 根据发运指示号查询可回退的发运明细 * * @param dlivDirNo * 发运指示号 * @return CoreReturnObject * @throws SQLException */ public CoreReturnObject queryShipRetRsLt(String dlivDirNo) throws SQLException { String shipProgCd = "08";// 发货明细结束 CoreReturnObject cro = this.query(dlivDirNo, shipProgCd); return cro; } /** * 查询没有车号的发货明细的卷 * * @param dlivDirNo * @return * @throws SQLException */ public CoreReturnObject queryShipRetRsNoCarNoLt(String dlivDirNo) throws SQLException { String shipProgCd = "03"; CoreReturnObject cro = this.query(dlivDirNo, shipProgCd); return cro; } private CoreReturnObject query(String dlivDirNo, String shipProgCd) throws SQLException { CoreReturnObject cro = null; StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append("SELECT A.OLD_SAMPL_NO\n"); sqlBuffer.append(" ,A.DLIV_DIRNO\n"); sqlBuffer.append(" ,A.SHIP_DIRNO\n"); sqlBuffer.append(" ,A.SHIP_INVNO\n"); sqlBuffer.append(" ,A.CUR_PROG_CD\n"); sqlBuffer.append(" ,A.COIL_STAT\n"); sqlBuffer.append(" ,A.SHIP_PROG_CD\n"); sqlBuffer.append(" ,A.TRNF_DTIME\n"); sqlBuffer.append(" ,DECODE(C.DLIV_TP,'C','汽运','T','火运') DLIV_TP \n"); sqlBuffer.append(" ,A.TRANS_CAR_NO\n"); sqlBuffer.append(" ,A.TRNF_REG\n"); sqlBuffer.append(" ,A.ORD_NO\n"); sqlBuffer.append(" ,A.ORD_SEQ\n"); sqlBuffer .append(" ,DECODE(A.TRNF_SHIFT,'1','早','2','中','3','晚') TRNF_SHIFT\n"); sqlBuffer .append(" ,DECODE(A.TRNF_GROUP,'A','甲','B','乙','C','丙','D','丁') TRNF_GROUP\n"); sqlBuffer.append(" ,A.TRNF_USE_TIME\n"); sqlBuffer .append(" ,(select CUST_NM FROM TBZ00_CUSTOMER WHERE CUST_CD = (SELECT CUST_CD FROM TBA01_ORD_COMM WHERE ORD_NO = A.ORD_NO) and REC_TP='01') CUST_NM \n"); sqlBuffer .append(" ,(select CUST_NM ORD_NM FROM TBZ00_CUSTOMER WHERE CUST_CD = C.ORD_CUST_CD and REC_TP='02') ORD_NM\n"); sqlBuffer .append(" ,(SELECT A.SM_CFNM FROM TBZ00_COMMCD A WHERE A.LG_CD = 'A01009' AND A.SM_CD = C.DEST_PCD) DEST_PCD_DESC\n"); sqlBuffer.append(" FROM C_TBC02_COIL_COMM A,TBJ01_DLIV_DIR C \n"); sqlBuffer.append(" WHERE A.DLIV_DIRNO = C.DLIV_DIRNO \n"); sqlBuffer.append(" AND A.DLIV_DIRNO = ? \n"); sqlBuffer.append(" AND A.COIL_STAT = '3' \n"); sqlBuffer.append(" AND A.CUR_PROG_CD = 'DFF'\n"); sqlBuffer.append(" AND A.SHIP_PROG_CD = ?\n"); sqlBuffer.append(" AND A.TRNF_DTIME IS NOT NULL\n"); cro = this.getDao("KgDao").ExcuteQuery(sqlBuffer.toString(), new Object[] { dlivDirNo, shipProgCd }); return cro; } /** * 发运明细回退 * * @param dlivDirNo * @param regId * @return * @throws SQLException */ public CoreReturnObject returnShipResultLt(String dlivDirNo, String regId,String return_reson) throws SQLException { CoreReturnObject cro = new CoreReturnObject(); Connection conn = null; PreparedStatement pSta = null; Statement sta = null; String strValue; String url; String cod1,cod2; try { /* UIJ030052 uij030052 = new UIJ030052(); url="http://172.16.0.49/xg56/webservice/mesWaybillService/queryIsLock/"+dlivDirNo; String retr=uij030052.jsonPost(url, dlivDirNo); int loc=retr.indexOf("IS_LOCK"); int loc1=retr.indexOf("RET_CODE"); cod1=retr.substring(loc1+11, loc1+12); cod2=retr.substring(loc+10, loc+11); //if("9".equals(cod2) ||("0".equals(cod2)&&"0".equals(cod1))) if("0".equals(cod1)&&"1".equals(cod2)) { cro.setV_errCode(new Integer(-1)); cro.setV_errMsg("明细数据已经锁定,如要解锁,请联系物流中心!"); }else {*/ String sqlOut = "select DLIV_DIRNO from tbj01_dliv_dir where DLIV_DIRNO = ? AND LAST_MAN IS NULL"; List listOut = this.getDao("KgDao").ExcuteQueryReturnList(sqlOut, new Object[] { dlivDirNo }); UIJ030052 uij030052 = new UIJ030052(); url="http://172.16.0.18:9090/TieQianinterface/services/MaterialOutInfo/materialoutinfo/"+dlivDirNo; String retr=uij030052.jsonPost(url, dlivDirNo); //if("9".equals(cod2) ||("0".equals(cod2)&&"0".equals(cod1))) if(retr.contains("false")&&listOut.size()>0) { cro.setV_errCode(new Integer(-1)); cro.setV_errMsg("车辆已出厂,如要退回,请先审批!"); }else { conn = this.getDao("KgDao").getConnection(); conn.setAutoCommit(false); CallableStatement cstmt = conn .prepareCall("{?=call SqListNumbRollBack(?)}"); cstmt.registerOutParameter(1, Types.VARCHAR); cstmt.setString(2, dlivDirNo); //cstmt.registerOutParameter(3, Types.INTEGER); cstmt.execute(); strValue = cstmt.getString(1); cstmt.close(); boolean isClearing = false;// 销售是否已结算 if ( !"1".equals(strValue)) { isClearing = true; } if (isClearing) { cro.setV_errCode(-2); cro.setV_errMsg("明细数据已经发送到销售,请联系销售退明细后成品才能进行明细回退!"); } else { // 更新钢卷公共表钢卷状态及发运状态 StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append("UPDATE C_TBC02_COIL_COMM A SET \n"); sqlBuffer.append(" A.COIL_STAT = '2'\n"); sqlBuffer.append(" ,A.CUR_PROG_CD = 'DFB'\n"); sqlBuffer.append(" ,A.SHIP_PROG_CD = '03'\n"); sqlBuffer.append(" ,A.TRNF_DTIME = ''\n"); sqlBuffer.append(" ,A.TRANS_CAR_NO = ''\n"); sqlBuffer.append(" ,A.TRNF_REG = ''\n"); sqlBuffer.append(" ,A.TRNF_SHIFT = ''\n"); sqlBuffer.append(" ,A.TRNF_GROUP = ''\n"); sqlBuffer.append(" ,A.TRNF_USE_TIME = ''\n"); sqlBuffer.append(" ,A.CUR_LOAD_LOC = A.BEF_LOAD_LOC\n"); sqlBuffer.append(" ,A.BEF_SHIP_INVNO = A.SHIP_INVNO\n"); sqlBuffer.append(" ,A.BEF_CRET_NO = A.CRET_NO\n"); sqlBuffer.append(" ,A.RETURN_SHIP_REG = ?\n"); sqlBuffer .append(" ,A.RETURN_SHIP_DTIME = TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS')\n"); sqlBuffer.append(" WHERE A.DLIV_DIRNO = ?\n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, regId); pSta.setString(2, dlivDirNo); pSta.executeUpdate(); pSta.close(); // 清除发运表发运信息 sqlBuffer = new StringBuffer(); sqlBuffer.append("UPDATE TBJ01_DLIV_DIR A SET \n"); sqlBuffer.append(" A.LANE_TP = ''\n"); sqlBuffer.append(" ,A.ENTERANCE_SEQ = ''\n"); sqlBuffer.append(" ,A.ALLOC_SEQ = ''\n"); sqlBuffer.append(" ,a.TRANS_CAR_NO = ''\n"); sqlBuffer.append(" WHERE A.DLIV_DIRNO = ?\n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, dlivDirNo); pSta.executeUpdate(); pSta.close(); // 更新运送表运送状态 sqlBuffer = new StringBuffer(); sqlBuffer.append("UPDATE TBJ01_SHIP_DIR A SET \n"); sqlBuffer.append(" A.SHIP_PROG_CD = '03'\n"); sqlBuffer .append(" WHERE A.SHIP_DIRNO = (SELECT T.SHIP_DIRNO FROM TBJ01_DLIV_DIR T WHERE T.DLIV_DIRNO = ?)\n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, dlivDirNo); pSta.executeUpdate(); pSta.close(); // 删除结算接口表数据 sqlBuffer = new StringBuffer(); sqlBuffer .append("DELETE TBJ02_COIL_COMM A WHERE A.DLIV_DIRNO = ? \n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, dlivDirNo); pSta.executeUpdate(); pSta.close(); // 还原出库前垛位 sqlBuffer = new StringBuffer(); sqlBuffer.append("UPDATE C_TBC02_COIL_COMM T \n"); sqlBuffer.append(" SET T.CUR_LOAD_LOC = (SELECT MIN(CUR_LOAD_LOC_F) FROM c_tbk08_coil_move T1 WHERE T1.COIL_NO = T.OLD_SAMPL_NO AND T1.MOVE_TYPE = '12') \n"); sqlBuffer.append(" WHERE T.DLIV_DIRNO =? \n"); pSta = conn.prepareStatement(sqlBuffer.toString()); pSta.setString(1, dlivDirNo); pSta.executeUpdate(); pSta.close(); //删除铁前接口数据 String sql6 = XmlSqlParsersFactory .getSql("UIJ030030_09.CALL"); this.getDao("KgDao").ExcuteProcedure(sql6,new String[] {"3",dlivDirNo,"","","","","","","4001LZ1","冷轧线"}, new String[0]); //更新货运中国标识 String sql7 = XmlSqlParsersFactory .getSql("UIJ030030_12.CALL"); this.getDao("KgDao").ExcuteProcedure(sql7,new String[] {"3","",dlivDirNo,"","","","","","","C",regId}, new String[0]); //插入日志 String sql8 = XmlSqlParsersFactory .getSql("UIJ030030_13.CALL"); this.getDao("KgDao").ExcuteProcedure(sql8,new String[] {"3","",dlivDirNo,"","","","","",return_reson,"L",regId}, new String[0]); //调用存货异动点存储过程 ProduceFactory PD= new ProduceFactory(); PD.ErpDataCover("LTDLIVNO",dlivDirNo,"69A","1","N",regId,"连退退货"); //PD.ErpDataCover("LTDLIVNO",dlivDirNo,"11AC","0","N",regId,"连退退货取消判定"); } conn.commit(); } }catch (SQLException ex) { if(conn != null){ conn.rollback(); } cro.setV_errCode(-1); cro.setV_errMsg("发货明细回退失败!"); } finally{ if(conn != null && !conn.isClosed()){ conn.close(); } } return cro; } public CoreReturnObject resend(ArrayList pDlivDirNos, String regId) throws SQLException { CoreReturnObject cro = new CoreReturnObject(); Connection conn = null; PreparedStatement pSta = null; Statement sta = null; String strValue,dlivDirNo; //汇总处理 for (int i = 0; i < pDlivDirNos.size(); i++) { String[] param = pDlivDirNos.get(i); try { dlivDirNo=param[0]; conn = this.getDao("KgDao").getConnection(); conn.setAutoCommit(false); CallableStatement cstmt = conn.prepareCall("{call HYZGMX.HYMX_ADD(?,?,?)}"); cstmt.setString(1, dlivDirNo); cstmt.setString(2, "连退线"); cstmt.registerOutParameter(3, Types.VARCHAR); //cstmt.registerOutParameter(3, Types.INTEGER); cstmt.execute(); strValue = cstmt.getString(3); cstmt.close(); boolean isClearing = false;// 销售是否已结算 if ( !"1".equals(strValue)) { isClearing = true; } conn.commit(); } catch (SQLException ex) { if(conn != null){ conn.rollback(); } cro.setV_errCode(-1); cro.setV_errMsg("补发明细失败!"); } finally{ if(conn != null && !conn.isClosed()){ conn.close(); } } } return cro; } /** * 确认排车操作 * * @param regId * @param list * @return * @throws SQLException */ public CoreReturnObject saveDLIVDIRCAR(String regId, String regOrder, String regGroup, ArrayList list) throws SQLException { CoreReturnObject cro = new CoreReturnObject(); Connection conn = null; try { conn = this.getDao("KgDao").getConnection(); conn.setAutoCommit(false); String[] param = null; ArrayList dlivDirNoList = new ArrayList(); StringBuffer sqlBuffer = null; // 根据运输指示号的个数来生成发货清单号 for (int i = 0; i < list.size(); i++) { param = list.get(i); boolean flag = false;// 运输号是否重复标识 for (int j = 0; j < dlivDirNoList.size(); j++) { if (param[2].equals(dlivDirNoList.get(i))) { flag = true; break; } } // 生成发货清单号 if (!flag) { sqlBuffer = new StringBuffer(); sqlBuffer.append("UPDATE TBJ01_DLIV_DIR\n"); sqlBuffer .append(" SET INV_NO = (SELECT 'LZ'||SUBSTR(TO_CHAR(SYSDATE, 'YYYY'), 4) ||'-'||TO_CHAR(TO_NUMBER(SUBSTRB(INV_NO, 5)) + 1, 'FM000000')\n"); sqlBuffer .append(" FROM (SELECT ROW_NUMBER() OVER (ORDER BY NVL(INV_NO,'LZ'||SUBSTR(TO_CHAR(SYSDATE, 'YYYY'), 4)||'-0000000') DESC) AS RN\n"); sqlBuffer.append(" ,INV_DTIME\n"); sqlBuffer.append(" ,INV_NO\n"); sqlBuffer.append(" FROM TBJ01_DLIV_DIR \n"); sqlBuffer.append(" WHERE INV_NO LIKE 'LZ'||SUBSTR(TO_CHAR(SYSDATE, 'YYYY'), 4) ||'%') A\n"); sqlBuffer.append(" WHERE A.RN = 1) \n"); sqlBuffer .append(" , INV_DTIME = TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS')\n"); sqlBuffer.append(" WHERE DLIV_DIRNO = ?\n"); PreparedStatement ps1 = conn.prepareStatement(sqlBuffer .toString()); ps1.setString(1, param[2]); ps1.executeUpdate(); ps1.close(); } // 将发货清单号更新到钢卷公共表 sqlBuffer = new StringBuffer(); sqlBuffer .append("SELECT A.INV_NO FROM TBJ01_DLIV_DIR A WHERE A.DLIV_DIRNO = '" + param[2] + "'\n"); Statement sta1 = conn.createStatement(); ResultSet rs = sta1.executeQuery(sqlBuffer.toString()); if (rs.next()) { String invNo = rs.getString("INV_NO"); sqlBuffer = new StringBuffer(); sqlBuffer.append("update c_tbc02_coil_comm X SET \n"); sqlBuffer.append(" X.SHIP_INVNO = ?\n"); sqlBuffer.append(" WHERE X.DLIV_DIRNO = ?\n"); PreparedStatement ps2 = conn.prepareStatement(sqlBuffer .toString()); ps2.setString(1, invNo); ps2.setString(2, param[2]); ps2.executeUpdate(); ps2.close(); } rs.close(); sta1.close(); // 插入移垛记录 sqlBuffer = new StringBuffer(); sqlBuffer.append("INSERT INTO C_TBK08_COIL_MOVE (ROLL_SEQ\n"); sqlBuffer .append(",CUR_LOAD_LOC_F,CUR_LOAD_LOC_T,COIL_NO,REG_ID\n"); sqlBuffer .append(",REG_SHIFT,REG_GROUP,REG_DTIME,REG_USE_DTIME,MOVE_TYPE)\n"); sqlBuffer .append("VALUES((SELECT MAX(ROLL_SEQ)+1 ROLL_SEQ FROM C_TBK08_COIL_MOVE)\n"); sqlBuffer .append(",?,?,?,?,?,?,TO_CHAR(SYSDATE,'YYYYMMDD'),TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'),'12')\n"); PreparedStatement pStaI = conn.prepareStatement(sqlBuffer .toString()); pStaI.setString(1, param[7]);// 垛位 pStaI.setString(2, ""); pStaI.setString(3, param[4]);// 钢卷号 pStaI.setString(4, regId); pStaI.setString(5, regOrder); pStaI.setString(6, regGroup); pStaI.executeUpdate(); pStaI.close(); // 根据钢卷号更新车厢号和排车顺序 sqlBuffer = new StringBuffer(); sqlBuffer.append("update c_tbc02_coil_comm\n"); sqlBuffer.append(" set \n"); sqlBuffer.append(" TRANS_CAR_NO = ?,\n"); sqlBuffer.append(" TRAIN_STEP_NO = ?,\n"); sqlBuffer.append(" DLIV_DIRNO = ?,\n"); sqlBuffer.append(" SHIP_DIRNO = ?,\n"); sqlBuffer.append(" ACT_WGT = ?,\n"); sqlBuffer.append(" SHIP_PROG_CD = '06',\n"); sqlBuffer.append(" BEF_LOAD_LOC = CUR_LOAD_LOC, \n"); sqlBuffer.append(" CUR_LOAD_LOC = '' \n"); sqlBuffer.append(" where OLD_SAMPL_NO =? \n"); PreparedStatement ps3 = conn.prepareStatement(sqlBuffer .toString()); ps3.setString(1, param[1]); ps3.setString(2, param[0]); ps3.setString(3, param[2]); ps3.setString(4, param[3]); ps3.setString(5, param[6]); ps3.setString(6, param[4]); ps3.executeUpdate(); ps3.close(); // 清除垛位表钢卷信息 (成品库未写垛位表数据) // sqlBuffer = new StringBuffer(); // sqlBuffer.append("update C_TBK08_COIL_YARD A SET \n"); // sqlBuffer.append(" A.COIL_NO = '',\n"); // sqlBuffer.append(" A.MOD_ID = '',\n"); // sqlBuffer.append(" A.MOD_TIME = ''\n"); // sqlBuffer.append(" WHERE A.COIL_NO = ?\n"); // // PreparedStatement ps4 = conn.prepareStatement(sqlBuffer // .toString()); // ps4.setString(1, param[4]); // ps4.executeUpdate(); // ps4.close(); flag = true; // 查询钢卷发运状态 sqlBuffer = new StringBuffer(); sqlBuffer .append("select a.SHIP_PROG_CD from c_tbc02_coil_comm a where a.ship_dirno = '" + param[3] + "'\n"); Statement sta2 = conn.createStatement(); rs = sta2.executeQuery(sqlBuffer.toString()); while (rs.next()) { String tmpShipProgCd = rs.getString("SHIP_PROG_CD"); if ("03".equals(tmpShipProgCd) || "04".equals(tmpShipProgCd)) { flag = false; break; } } rs.close(); sta2.close(); if (flag) { // 更新发运表发运状态 sqlBuffer = new StringBuffer(); sqlBuffer.append("update tbj01_ship_dir\n"); sqlBuffer.append(" set \n"); sqlBuffer.append(" ship_prog_cd = '05'\n"); sqlBuffer.append(" where ship_dirno =?\n"); PreparedStatement ps5 = conn.prepareStatement(sqlBuffer .toString()); ps5.setString(1, param[3]); ps5.executeUpdate(); ps5.close(); // 开具质保书 String[] inparams = new String[] { param[3] }; String sCRET_NO = ""; String sRETURN_CD = "YY"; String sRETURN_MSG = null; if ("YY".equals(sRETURN_CD)) { String sqlString = "{call ZL_LIANT_DCS01.CRET_BOOK_GENT(?,?,?)}"; CallableStatement cstm = conn.prepareCall(sqlString); cstm.setString(1, param[3]); cstm.registerOutParameter(2, java.sql.Types.VARCHAR); cstm.registerOutParameter(3, java.sql.Types.VARCHAR); cstm.execute(); sRETURN_MSG = cstm.getString(3); cstm.close(); if ("XX".equals(sRETURN_MSG)) { // 这里出现的异常情况是板坯号与钢卷号不匹配 cro.setV_errMsg("开具质保书失败,请联系管理员!"); throw new SQLException(); } } } } conn.commit(); } catch (SQLException ex) { if (conn != null) { conn.rollback(); } } finally { if (conn != null && !conn.isClosed()) { conn.close(); } } return cro; } public CoreReturnObject queryTransCoils(String dlivDirNo) throws SQLException { CoreReturnObject cro = null; StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append("SELECT D.OLD_SAMPL_NO\n"); sqlBuffer.append(" ,D.SPEC_STL_GRD\n"); sqlBuffer.append(" ,D.INSTR_COIL_THK||'*'||D.INSTR_COIL_WTH ORD_SIZE\n"); sqlBuffer.append(" ,D.SPEC_STL_GRD\n"); sqlBuffer.append(" ,D.INSTR_COIL_THK||'*'||D.INSTR_COIL_WTH ORD_SIZE\n"); sqlBuffer.append(" ,D.ACT_WGT\n"); sqlBuffer.append(" ,D.CUR_LOAD_LOC\n"); sqlBuffer.append(" FROM C_TBC02_COIL_COMM d WHERE d.DLIV_DIRNO=?\n"); cro = this.getDao("KgDao").ExcuteQuery(sqlBuffer.toString(), new Object[] { dlivDirNo }); return cro; } public CoreReturnObject updateCarNo(String dlivDirNo,String carNo) throws SQLException { CoreReturnObject cro = new CoreReturnObject(); Map result = this.getDao("KgDao").CoreBeginTranscation(); String sql = XmlSqlParsersFactory.getSql("UIJ050030_01.UPDATE"); this.getDao("KgDao").ExcuteNonQuery(sql, new Object[]{carNo,dlivDirNo}); sql = XmlSqlParsersFactory.getSql("UIJ030030_08.UPDATE"); this.getDao("KgDao").ExcuteNonQuery(sql, new Object[]{carNo,dlivDirNo}); sql = XmlSqlParsersFactory.getSql("UIJ030030_09.UPDATE"); this.getDao("KgDao").ExcuteNonQuery(sql, new Object[]{carNo,dlivDirNo}); this.getDao("KgDao").CoreCommit(result); return cro; } }