package com.web.pda.lyt.lytPda.service.internal; import com.app.base.data.ApiResponseResult; import com.web.pda.lyt.lytPda.service.PQCSampleSignService; 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 org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.Map; @Service(value = "PQCSampleSignService") @Transactional(propagation = Propagation.REQUIRED) public class PQCSampleSignlmpl extends AppUtills implements PQCSampleSignService { @Autowired private JdbcTemplate jdbcTemplate; /** * 获取批型号/工单号/工序名称-数据源 **/ public ApiResponseResult getDataSource(String factory, String company, String ftype, String keyword, String boardModel)throws Exception { List list = getDataSourcePrc(factory,company,ftype,keyword,boardModel); if (!list.get(0).toString().equals("0")) {// 存储过程调用失败 //判断返回游标 return ApiResponseResult.failure(list.get(1).toString()); } return ApiResponseResult.success().data(list.get(2)); } /** * 保存操作 **/ public ApiResponseResult saveData(String factory, String company, String userNo, String boardModel, String taskNo,String expireDate, String procName, String procNo, String badItem,String signer)throws Exception { List list = saveDataPrc(factory,company,userNo,boardModel,taskNo,expireDate,procName,procNo,badItem,signer); if (!list.get(0).toString().equals("0")) {// 存储过程调用失败 //判断返回游标 return ApiResponseResult.failure(list.get(1).toString()); } return ApiResponseResult.success().data(list.get(2)); } /** * 提交 **/ public ApiResponseResult sumbitData(String factory, String company, String mid, String userNo, String operaType, String remark, String tableName) throws Exception { List list = sumbitDataPrc(factory, company, mid, userNo,operaType,remark, tableName); if (!list.get(0).toString().equals("0")) {// 存储过程调用失败 //判断返回游标 return ApiResponseResult.failure(list.get(1).toString()); } return ApiResponseResult.success(); } public List sumbitDataPrc(String factory, String company, String mid, String userNo, String operaType, String remark, String tableName) throws Exception { List resultList = (List) jdbcTemplate.execute(new CallableStatementCreator() { @Override public CallableStatement createCallableStatement(Connection con) throws SQLException { String storedProc = "{call sp_pqc_other_submit(?,?,?,?,?,?,?,?,?)}";// 调用的sql CallableStatement cs = con.prepareCall(storedProc); cs.setString(1, factory); cs.setString(2, company); cs.setString(3, mid); cs.setString(4, userNo); cs.setString(5, operaType); cs.setString(6, remark); cs.setString(7, tableName); 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)); return result; } }); return resultList; } /** * 保存 */ public List saveDataPrc(String factory, String company, String userNo, String boardModel, String taskNo,String expireDate, String procName, String procNo, String badItem, String signer) throws Exception { List resultList = (List) jdbcTemplate.execute(new CallableStatementCreator() { @Override public CallableStatement createCallableStatement(Connection con) throws SQLException { String storedProc = "{call sp_pqc_app_qt_sample(?,?,?,?,?,?,?,?,?,?,?,?,?)}";// 调用的sql CallableStatement cs = con.prepareCall(storedProc); cs.setString(1, factory); cs.setString(2, company); cs.setString(3, userNo); cs.setString(4, boardModel); cs.setString(5, taskNo); cs.setString(6, expireDate); cs.setString(7, procName); cs.setString(8, procNo); cs.setString(9, badItem); cs.setString(10, signer); cs.registerOutParameter(11, java.sql.Types.INTEGER);// 输出参数 返回标识 cs.registerOutParameter(12, java.sql.Types.VARCHAR);// 输出参数 返回标识 cs.registerOutParameter(13, -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(11)); result.add(cs.getString(12)); if (cs.getString(11).toString().equals("0")) { // 游标处理 ResultSet rs = (ResultSet) cs.getObject(13); 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 getDataSourcePrc(String factory, String company, String ftype, String keyword, String boardModel) throws Exception { List resultList = (List) jdbcTemplate.execute(new CallableStatementCreator() { @Override public CallableStatement createCallableStatement(Connection con) throws SQLException { String storedProc = "{call sp_pqc_app_qt_sample_data(?,?,?,?,?,?,?,?)}";// 调用的sql CallableStatement cs = con.prepareCall(storedProc); cs.setString(1, factory); cs.setString(2, company); cs.setString(3, ftype); cs.setString(4, keyword); cs.setString(5, boardModel); cs.registerOutParameter(6, java.sql.Types.INTEGER);// 输出参数 返回标识 cs.registerOutParameter(7, java.sql.Types.VARCHAR);// 输出参数 返回标识 cs.registerOutParameter(8, -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(6)); result.add(cs.getString(7)); if (cs.getString(6).toString().equals("0")) { // 游标处理 ResultSet rs = (ResultSet) cs.getObject(8); 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 ApiResponseResult getRecordList(String factory, String company,String keyword, int size, int page)throws Exception { List list = getRecordListPrc(factory,company,keyword,size,page); if (!list.get(0).toString().equals("0")) {// 存储过程调用失败 //判断返回游标 return ApiResponseResult.failure(list.get(1).toString()); } return ApiResponseResult.success().data(list.get(2)); } /** * 获取样品录入操作记录 **/ public List getRecordListPrc(String factory, String company, 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_qt_sample_list(?,?,?,?,?,?,?,?)}";// 调用的sql CallableStatement cs = con.prepareCall(storedProc); cs.setString(1, factory); cs.setString(2, company); cs.setString(3, keyword); cs.setInt(4, size); cs.setInt(5, page); cs.registerOutParameter(6, java.sql.Types.INTEGER);// 输出参数 返回标识 cs.registerOutParameter(7, java.sql.Types.VARCHAR);// 输出参数 返回标识 cs.registerOutParameter(8, -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(6)); result.add(cs.getString(7)); if (cs.getString(6).toString().equals("0")) { // 游标处理 ResultSet rs = (ResultSet) cs.getObject(8); 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; } }