package com.web.pda.lyt.lytPda.service.internal; import com.app.base.data.ApiResponseResult; import com.web.pda.lyt.lytPda.service.PQCRetestService; 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.HashMap; import java.util.List; import java.util.Map; @Service(value = "PQCRetestService") @Transactional(propagation = Propagation.REQUIRED) public class PQCRetestlmpl extends AppUtills implements PQCRetestService { @Autowired private JdbcTemplate jdbcTemplate; /** * 复测抽检录入数据源 * **/ public ApiResponseResult getRetestData(String factory, String company,String ftype,String procno,String modelno,String keyword) throws Exception { List list = getRetestDataPrc(factory,company,ftype,procno,modelno,keyword); if (!list.get(0).toString().equals("0")) {// 存储过程调用失败 //判断返回游标 return ApiResponseResult.failure(list.get(1).toString()); } return ApiResponseResult.success().data(list.get(2)); } /** * 复测抽检录入操作 * **/ public ApiResponseResult getInspectionInfo(String factory, String company, String userNo, String lineType, String procNo, String lotNO, String classNO) throws Exception { List list = getInspectionInfoPrc(factory, company, userNo, lineType, procNo, lotNO,classNO); if (!list.get(0).toString().equals("0")) {// 存储过程调用失败 //判断返回游标 return ApiResponseResult.failure(list.get(1).toString()); } Map map = new HashMap(); map.put("cursor1", list.get(2)); map.put("cursor2", list.get(3)); return ApiResponseResult.success().data(map); } /** * 执行选择检查水平/接收标准/电池类型/客户名称的操作 **/ public ApiResponseResult modifyPQCValue(String factory, String company, String userNo, String mid, String tableName, String changeName, String changeValue) throws Exception { List list = modifyPQCValuePrc(factory, company, userNo, mid, tableName, changeName,changeValue); if (!list.get(0).toString().equals("0")) {// 存储过程调用失败 //判断返回游标 return ApiResponseResult.failure(list.get(1).toString()); } return ApiResponseResult.success(); } @Override public ApiResponseResult getBillReturn(String billNo) throws Exception { List list = getBillReturnPrc(billNo); if (!list.get(0).toString().equals("0")) {// 存储过程调用失败 //判断返回游标 return ApiResponseResult.failure(list.get(1).toString()); } Map map = new HashMap(); map.put("MAIN", list.get(2));//主表数据 map.put("SUB", list.get(3));//从表数据 return ApiResponseResult.success().data(map); } 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)); return result; } }); return resultList; } /** * 获取送检单号详细信息 * * **/ public List getInspectionInfoPrc(String factory, String company, String userNo, String lineType, String procNo, String lotNO, String classNO) throws Exception { List resultList = (List) jdbcTemplate.execute(new CallableStatementCreator() { @Override public CallableStatement createCallableStatement(Connection con) throws SQLException { String storedProc = "{call sp_pqc_app_samplebillf_insert(?,?,?,?,?,?,?,?,?,?,?)}";// 调用的sql CallableStatement cs = con.prepareCall(storedProc); cs.setString(1, factory); cs.setString(2, company); cs.setString(3, userNo); cs.setString(4, lineType);//lineType cs.setString(5, procNo);//procNo cs.setString(6, lotNO); // lotNO cs.setString(7, classNO); // classNO cs.registerOutParameter(8, java.sql.Types.INTEGER);// 输出参数 返回标识 cs.registerOutParameter(9, java.sql.Types.VARCHAR);// 输出参数 返回标识 cs.registerOutParameter(10, -10);// 输出参数 追溯数据 cs.registerOutParameter(11, -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(8)); result.add(cs.getString(9)); if (cs.getString(8).toString().equals("0")) { // 游标处理 ResultSet rs = (ResultSet) cs.getObject(10); ResultSet rs2 = (ResultSet) cs.getObject(11); try { l = fitMap(rs); l_2 = fitMap(rs2); } 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 getRetestDataPrc(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_samplebillf_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; } }