4
hao
2025-04-16 c5fb1fbcbb2bf4d511773d348f9ef625855c61fc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
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;
    }
}