package com.web.pda.lyt.lytPda.service.internal; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.CallableStatementCallback; import org.springframework.jdbc.core.CallableStatementCreator; import org.springframework.jdbc.core.JdbcTemplate; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class AppUtills { @Autowired private JdbcTemplate jdbcTemplate; /** * 获取工序/型号/工单号列表 */ public List getBatchNumPrc(String factory, String company,String ftype, String procno,String modelno,String keyword) throws Exception { List resultList = (List) jdbcTemplate.execute(new CallableStatementCreator() { @Override public CallableStatement createCallableStatement(Connection con) throws SQLException { String storedProc = "{call sp_pqc_app_firstbill_lot(?,?,?,?,?,?,?,?,?)}";// 调用的sql CallableStatement cs = con.prepareCall(storedProc); cs.setString(1, factory); cs.setString(2, company); cs.setString(3, ftype); cs.setString(4, procno); cs.setString(5, modelno); cs.setString(6, keyword); cs.registerOutParameter(7, java.sql.Types.INTEGER);// 输出参数 返回标识 cs.registerOutParameter(8, java.sql.Types.VARCHAR);// 输出参数 返回标识 cs.registerOutParameter(9, -10);// 输出参数 追溯数据 return cs; } }, new CallableStatementCallback() { public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException { List result = new ArrayList<>(); List> l = new ArrayList(); cs.execute(); result.add(cs.getInt(7)); result.add(cs.getString(8)); if (cs.getString(7).toString().equals("0")) { // 游标处理 ResultSet rs = (ResultSet) cs.getObject(9); try { l = fitMap(rs); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } result.add(l); } System.out.println(l); return result; } }); return resultList; } /** * 修改值-不返回值 */ public List modifyPQCValuePrc( String factory,String company,String userNo,String mid ,String tableName,String changeName,String changeValue) throws Exception { List resultList = (List) jdbcTemplate.execute(new CallableStatementCreator() { @Override public CallableStatement createCallableStatement(Connection con) throws SQLException { String storedProc = "{call sp_pqc_insert_value_field(?,?,?,?,?,?,?,?,?)}";// 调用的sql CallableStatement cs = con.prepareCall(storedProc); cs.setString(1, factory); cs.setString(2, company); cs.setString(3, userNo); cs.setString(4, mid); cs.setString(5, tableName); cs.setString(6, changeName); cs.setString(7, changeValue); cs.registerOutParameter(8, java.sql.Types.INTEGER);// 输出参数 返回标识 cs.registerOutParameter(9, java.sql.Types.VARCHAR);// 输出参数 返回标识 return cs; } }, new CallableStatementCallback() { public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException { List result = new ArrayList<>(); List> l = new ArrayList(); cs.execute(); result.add(cs.getInt(8)); result.add(cs.getString(9)); System.out.println(l); return result; } }); return resultList; } /** * 修改值-返回值 */ public List modifyPQCValuePrc1( String factory,String company,String userNo,String mid ,String tableName,String changeName,String changeValue) throws Exception { List resultList = (List) jdbcTemplate.execute(new CallableStatementCreator() { @Override public CallableStatement createCallableStatement(Connection con) throws SQLException { String storedProc = "{call sp_pqc_app_insertvaluefield(?,?,?,?,?,?,?,?,?,?)}";// 调用的sql CallableStatement cs = con.prepareCall(storedProc); cs.setString(1, factory); cs.setString(2, company); cs.setString(3, userNo); cs.setString(4, mid); cs.setString(5, tableName); cs.setString(6, changeName); cs.setString(7, changeValue); cs.registerOutParameter(8, java.sql.Types.INTEGER);// 输出参数 返回标识 cs.registerOutParameter(9, java.sql.Types.VARCHAR);// 输出参数 返回标识 cs.registerOutParameter(10, java.sql.Types.VARCHAR);// 输出参数 返回标识 return cs; } }, new CallableStatementCallback() { public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException { List result = new ArrayList<>(); List> l = new ArrayList(); cs.execute(); result.add(cs.getInt(8)); result.add(cs.getString(9)); if (cs.getString(8).toString().equals("0")) { result.add(cs.getString(10)); } System.out.println(l); return result; } }); return resultList; } /** * 获取合格结果 * **/ public List getOkResultPrc(String factory, String company,String userNo, String mid) throws Exception { List resultList = (List) jdbcTemplate.execute(new CallableStatementCreator() { @Override public CallableStatement createCallableStatement(Connection con) throws SQLException { String storedProc = "{call sp_pqc_getokresult(?,?,?,?,?,?)}";// 调用的sql CallableStatement cs = con.prepareCall(storedProc); cs.setString(1, factory); cs.setString(2, company); cs.setString(3, userNo); cs.setString(4, mid); cs.registerOutParameter(5, java.sql.Types.INTEGER);// 输出参数 返回标识 cs.registerOutParameter(6, java.sql.Types.VARCHAR);// 输出参数 返回标识 return cs; } }, new CallableStatementCallback() { public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException { List result = new ArrayList<>(); cs.execute(); result.add(cs.getInt(5)); result.add(cs.getString(6)); return result; } }); return resultList; } /** * 获取首检操作记录列表 */ public List getRecordListPrc(String factory, String company,String user,String ftype,String mid,String keyword, int size,int page) throws Exception { List resultList = (List) jdbcTemplate.execute(new CallableStatementCreator() { @Override public CallableStatement createCallableStatement(Connection con) throws SQLException { String storedProc = "{call sp_pqc_app_checkbill_list(?,?,?,?,?,?,?,?,?,?,?,?)}";// 调用的sql CallableStatement cs = con.prepareCall(storedProc); cs.setString(1, factory); cs.setString(2, company); cs.setString(3, user); cs.setString(4, ftype); cs.setString(5, mid); cs.setString(6, keyword); cs.setInt(7, size); cs.setInt(8, page); cs.registerOutParameter(9, java.sql.Types.INTEGER);// 输出参数 返回标识 cs.registerOutParameter(10, java.sql.Types.VARCHAR);// 输出参数 返回标识 cs.registerOutParameter(11, -10);// 输出参数 追溯数据 cs.registerOutParameter(12, -10);// 输出参数 追溯数据 return cs; } }, new CallableStatementCallback() { public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException { List result = new ArrayList<>(); List> l = new ArrayList(); List> l_2 = new ArrayList(); cs.execute(); result.add(cs.getInt(9)); result.add(cs.getString(10)); if (cs.getString(9).toString().equals("0")) { // 游标处理 ResultSet rs = (ResultSet) cs.getObject(11); ResultSet rs_2 = (ResultSet) cs.getObject(12); try { l = fitMap(rs); l_2 = fitMap(rs_2); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } result.add(l); result.add(l_2); } System.out.println(l); System.out.println(l_2); return result; } }); return resultList; } /** * 根据检验单号返回数据 */ public List getBillReturnPrc(String billNo) throws Exception { List resultList = (List) jdbcTemplate.execute(new CallableStatementCreator() { @Override public CallableStatement createCallableStatement(Connection con) throws SQLException { String storedProc = "{call Prc_Pqc_billReturn(?,?,?,?,?)}";// 调用的sql CallableStatement cs = con.prepareCall(storedProc); cs.setString(1, billNo); cs.registerOutParameter(2, java.sql.Types.INTEGER);// 输出参数 返回标识 cs.registerOutParameter(3, java.sql.Types.VARCHAR);// 输出参数 返回标识 cs.registerOutParameter(4, -10);// 输出参数 追溯数据 cs.registerOutParameter(5, -10);// 输出参数 追溯数据 return cs; } }, new CallableStatementCallback() { public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException { List result = new ArrayList<>(); List> l = new ArrayList(); List> l_2 = new ArrayList(); cs.execute(); result.add(cs.getInt(2)); result.add(cs.getString(3)); if (cs.getString(2).toString().equals("0")) { // 游标处理 ResultSet rs = (ResultSet) cs.getObject(4); ResultSet rs_2 = (ResultSet) cs.getObject(5); try { l = fitMap(rs); l_2 = fitMap(rs_2); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } result.add(l); result.add(l_2); } System.out.println(l); System.out.println(l_2); return result; } }); return resultList; } public List getCheckerPrc(String checkTask) { List resultList = (List) jdbcTemplate.execute(new CallableStatementCreator() { @Override public CallableStatement createCallableStatement(Connection con) throws SQLException { String storedProc = "{call Prc_Pqc_Checker(?,?,?,?)}";// 调用的sql CallableStatement cs = con.prepareCall(storedProc); cs.setString(1, checkTask); cs.registerOutParameter(2, java.sql.Types.INTEGER);// 输出参数 返回标识 cs.registerOutParameter(3, java.sql.Types.VARCHAR);// 输出参数 返回标识 cs.registerOutParameter(4, -10);// 输出参数 追溯数据 return cs; } }, new CallableStatementCallback() { public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException { List result = new ArrayList<>(); List> l = new ArrayList(); cs.execute(); result.add(cs.getInt(2)); result.add(cs.getString(3)); if (cs.getString(2).toString().equals("0")) { // 游标处理 ResultSet rs = (ResultSet) cs.getObject(4); try { l = fitMap(rs); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } result.add(l); } System.out.println(l); return result; } }); return resultList; } public List> fitMap(ResultSet rs) throws Exception { List> list = new ArrayList<>(); if (null != rs) { Map map; int colNum = rs.getMetaData().getColumnCount(); List columnNames = new ArrayList(); for (int i = 1; i <= colNum; i++) { columnNames.add(rs.getMetaData().getColumnName(i)); } while (rs.next()) { map = new HashMap(); for (String columnName : columnNames) { map.put(columnName, rs.getString(columnName)); } list.add(map); } } return list; } }