package com.web.kanban.service.internal; import com.app.base.data.ApiResponseResult; import com.web.kanban.service.HyKanbanService; 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.*; @Service(value = "HyKanbanService") @Transactional(propagation = Propagation.REQUIRED) public class HyKanbanImpl implements HyKanbanService { @Autowired private JdbcTemplate jdbcTemplate; @Override public ApiResponseResult getProductionData() { Map map = new HashMap(); map.put("Data1", doProcedure("PRC_KANBAN_TUBUA_DATA",getQuestion(4),new String[] {"PI_TYPE"}, new String[] {"1"},new String[] {"PO_FLAG","PO_TEXT","PO_CURSOR"})); //map.put("Data2", doProcedure("PRC_KANBAN_TUBUA_DATA",getQuestion(4),new String[] {"PI_TYPE"}, new String[] {"2"},new String[] {"PO_FLAG","PO_TEXT","PO_CURSOR"})); map.put("Data3", doProcedure("PRC_KANBAN_TUBUA_DATA",getQuestion(4),new String[] {"PI_TYPE"}, new String[] {"3"},new String[] {"PO_FLAG","PO_TEXT","PO_CURSOR"})); List list_2 = doProcedure("PRC_KANBAN_TUBUA_DATA",getQuestion(4),new String[] {"PI_TYPE"}, new String[] {"2"},new String[] {"PO_FLAG","PO_TEXT","PO_CURSOR"}); Integer flag = (Integer)list_2.get(0); Map map_2 = new HashMap(); map_2.put("Leng", new ArrayList()); map_2.put("BaiData", new ArrayList()); map_2.put("YeData", new ArrayList()); if(flag == 0){ List> lmap = (List>)list_2.get(2); //先取所有日期 List list_data = new ArrayList(); for(Map map1:lmap){ if(map1.get("F_DATE") != null){ String data = map1.get("F_DATE").toString(); boolean flag_data = list_data.contains(data); if(!flag_data){ list_data.add(data); } } } Collections.sort(list_data);//升序 //取白板和晚班信息 String[] str_bai = new String[list_data.size()]; String[] str_ye = new String[list_data.size()]; for(int i=0;i map2:lmap){ if(map2.get("F_DATE") != null){ if(str.equals(map2.get("F_DATE").toString())){ if("白班".equals(map2.get("SHIFT").toString())){ str_bai[i] = map2.get("QUANTITY")==null?"0": map2.get("QUANTITY").toString(); }else if("夜班".equals(map2.get("SHIFT").toString())){ str_ye[i] = map2.get("QUANTITY")==null?"0": map2.get("QUANTITY").toString(); } } } } } map_2.put("Leng",list_data); map_2.put("BaiData", str_bai); map_2.put("YeData", str_ye); } map.put("Data2",map_2); return ApiResponseResult.success().data(map); } public ApiResponseResult getHeyiData(String code) throws Exception { // TODO Auto-generated method stub Map map = new HashMap(); map.put("Data1", doProcedure("PRC_APP_KANBAN_TUBUA_DATA",getQuestion(4),new String[] {"PI_TYPE"}, new String[] {"1"},new String[] {"PO_FLAG","PO_TEXT","PO_CURSOR"})); map.put("Data2", doProcedure("PRC_APP_KANBAN_TUBUA_DATA",getQuestion(4),new String[] {"PI_TYPE"}, new String[] {"2"},new String[] {"PO_FLAG","PO_TEXT","PO_CURSOR"})); map.put("Data3", doProcedure("PRC_APP_KANBAN_TUBUA_DATA",getQuestion(4),new String[] {"PI_TYPE"}, new String[] {"3"},new String[] {"PO_FLAG","PO_TEXT","PO_CURSOR"})); map.put("Data4", doProcedure("PRC_APP_KANBAN_TUBUA_DATA",getQuestion(4),new String[] {"PI_TYPE"}, new String[] {"4"},new String[] {"PO_FLAG","PO_TEXT","PO_CURSOR"})); return ApiResponseResult.success().data(map); } private List doProcedure(String pro_name, String ques, String[] in_params, String[] in_values, String[] out_params) { List resultList = (List) jdbcTemplate.execute(new CallableStatementCreator() { @Override public CallableStatement createCallableStatement(Connection con) throws SQLException { String storedProc = "{call "+pro_name+"("+ques+")}";// 调用的sql CallableStatement cs = con.prepareCall(storedProc); for(int i=0;i result = new ArrayList<>(); List> l = new ArrayList(); cs.execute(); /*result.add(cs.getInt(3)); result.add(cs.getString(4));*/ result.add(cs.getInt(in_params.length+1)); result.add(cs.getString(in_params.length+2)); if (cs.getString(in_params.length+1).toString().equals("0")) { for(int k=3;k<=out_params.length;k++){ // 游标处理 ResultSet rs = (ResultSet) cs.getObject(in_params.length+k); try { l = fitMap(rs); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println(e.toString()); } result.add(l); } } return result; } }); return resultList; } private String getQuestion(int num){ String ques = ""; for(int i=0;i1){ ques = ques.substring(0, ques.length()-1); } return ques; } private 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 LinkedHashMap(); for (String columnName : columnNames) { map.put(columnName, rs.getString(columnName)); } list.add(map); } } return list; } }