package com.web.pda.gltPda_wdPda.service.internal;
|
|
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.LinkedHashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import com.web.pda.gltPda_wdPda.service.IODHSService;
|
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 com.app.base.data.ApiResponseResult;
|
|
@Service(value = "IODHSService")
|
@Transactional(propagation = Propagation.REQUIRED)
|
public class IODHSlmpl implements IODHSService {
|
|
@Autowired
|
private JdbcTemplate jdbcTemplate;
|
|
// 用于德和盛设备调用接口,获取MES数据
|
public ApiResponseResult getMesInfo(String barcode, int page, int size) throws Exception {
|
|
List<Object> list = getMesInfoprc(barcode, page, size);
|
if (!list.get(0).toString().equals("0")) {// 存储过程调用失败 //判断返回游标
|
return ApiResponseResult.failure(list.get(1).toString());
|
}
|
|
// List<Map<String, Object>> l_tmep = (List<Map<String, Object>>) list.get(3);
|
// Map<String, Object> m = l_tmep.get(0);
|
// Map<String, Object> m_new = new LinkedHashMap<String, Object>();//使用LinkedHashMap会按顺序摆列
|
// m_new.put("CAPACITY", getNull(m.get("CAPACITY")));
|
// m_new.put("OCV1", getNull(m.get("OCV1")));
|
// m_new.put("OCV2", getNull(m.get("OCV2")));
|
// m_new.put("OCV3", getNull(m.get("OCV3")));
|
// m_new.put("OCR1", getNull(m.get("OCR1")));
|
// m_new.put("OCR2", getNull(m.get("OCR2")));
|
// m_new.put("OCR3", getNull(m.get("OCR3")));
|
// m_new.put("K12", getNull(m.get("K12")));
|
// m_new.put("K13", getNull(m.get("K13")));
|
// Map map = new HashMap();
|
// map.put("Sum", list.get(2));
|
// map.put("MesData", m_new);
|
// return ApiResponseResult.success().data(map);
|
|
Map map = new HashMap();
|
map.put("Sum", list.get(2));
|
map.put("MesData", list.get(3));
|
|
if(list.get(1) != null){
|
return ApiResponseResult.success(list.get(1).toString()).data(map);
|
}else {
|
return ApiResponseResult.failure("过程返回PO_TEXT字段值不能为空,请检查。");
|
}
|
}
|
|
private String getNull(Object o) {
|
if (o == null) {
|
return "";
|
}
|
return o.toString();
|
}
|
|
/**
|
* 2021-05-08 用于德和盛设备调用接口,获取MES数据
|
**/
|
public List getMesInfoprc(String barcode, int page, int size) throws Exception {
|
List resultList = (List) jdbcTemplate.execute(new CallableStatementCreator() {
|
@Override
|
public CallableStatement createCallableStatement(Connection con) throws SQLException {
|
String storedProc = "{call PRC_IO_DHS (?,?,?,?,?,?,?,?,?)}";// 调用的sql
|
CallableStatement cs = con.prepareCall(storedProc);
|
cs.setString(1, "");
|
cs.setString(2, "");
|
cs.setString(3, barcode);
|
cs.setInt(4, page);// 每页记录
|
cs.setInt(5, size);// 当前页码
|
cs.registerOutParameter(6, java.sql.Types.INTEGER);// 输出参数 返回标识
|
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<Object> result = new ArrayList<>();
|
List<Map<String, Object>> l = new ArrayList();
|
cs.execute();
|
|
result.add(cs.getInt(7));
|
result.add(cs.getString(8));
|
if (cs.getString(7).toString().equals("0")) {
|
result.add(cs.getInt(6));// 总记录数
|
// 游标处理
|
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<Map<String, Object>> fitMap(ResultSet rs) throws Exception {
|
List<Map<String, Object>> list = new ArrayList<>();
|
if (null != rs) {
|
Map<String, Object> map;
|
int colNum = rs.getMetaData().getColumnCount();
|
List<String> columnNames = new ArrayList<String>();
|
for (int i = 1; i <= colNum; i++) {
|
columnNames.add(rs.getMetaData().getColumnName(i));
|
}
|
while (rs.next()) {
|
map = new LinkedHashMap<String, Object>();
|
for (String columnName : columnNames) {
|
map.put(columnName, rs.getString(columnName));
|
}
|
list.add(map);
|
}
|
}
|
return list;
|
}
|
}
|