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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
package com.web.generalKanBanPage.service.impl;
 
import com.app.base.data.ApiResponseResult;
import com.web.generalKanBanPage.dao.GeneralKanBanPageDao;
import com.web.generalKanBanPage.entity.GeneralKanBanPage;
import com.web.generalKanBanPage.service.IGeneralKanBanPageService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
 
 
@Service
public class GeneralKanBanPageServiceImpl implements IGeneralKanBanPageService {
    protected Logger logger = LoggerFactory.getLogger(GeneralKanBanPageServiceImpl.class);
 
    @Autowired
    private GeneralKanBanPageDao generalKanBanPageDao;
 
    // 前台自动新增触发
    @Transactional
    @Override
    public ApiResponseResult autoInsert(GeneralKanBanPage generalKanBanPage) {
        String ip = generalKanBanPage.getBsIp();
        String port = generalKanBanPage.getBsPort();
        String bsMac = generalKanBanPage.getBsMac();
        Date time = generalKanBanPage.getCreatedTime();
 
        if(ip==null||ip==""||port==null||port==""||bsMac==null||bsMac==""){
            return ApiResponseResult.failure("ip或端口号或mac地址都不能为空");
        }
        if(!port.matches("^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$")) {
            return ApiResponseResult.failure("请输入正确的端口号");
        }
 
        int count = 0;
        // 根据bsMac查找数据库中存在数量,有则修改,无则新增
        count = generalKanBanPageDao.countByBsMac(bsMac);
        if(count==1){
            int row = 0;
            GeneralKanBanPage kanban = generalKanBanPageDao.findByBsMac(bsMac);
            // 若前台绑定了ip和端口号,那么换了服务器之后,就无法请求到
            if(ip!=""||ip!=null){ // 因此若前台传入ip不为空,则将后台数据库的ip覆盖前台传入的ip且保存在数据库
                kanban.setBsIp(ip);
//                ip = kanban.getBsIp();
            }
            if(port!=""||port!=null){ // 因此若前台传入port不为空,则将后台数据库的port覆盖前台传入的port且保存在数据库
                kanban.setBsPort(port);
//                port = kanban.getBsPort();
            }
//            kanban.setBsIp(ip);
//            kanban.setBsPort(port);
            generalKanBanPageDao.save(kanban);
            return ApiResponseResult.success();
        }else if(count>1){
            logger.error("根据bsMac查询数据库,有多条数据,请修改!");
            return ApiResponseResult.failure("请联系技术人员!");
        }
        // count=0 根据mac没有找到对应的数据,则新增
        generalKanBanPageDao.save(generalKanBanPage);
        return ApiResponseResult.success();
    }
 
    // 前台点击提交触发
    @Transactional
    @Override
    public ApiResponseResult insert(GeneralKanBanPage generalKanBanPage) {
        String ip = generalKanBanPage.getBsIp();
        String port = generalKanBanPage.getBsPort();
        String path1 = generalKanBanPage.getBsPath1();
        String bsMac = generalKanBanPage.getBsMac();
        String nick = generalKanBanPage.getBsNick();
        Date time = generalKanBanPage.getCreatedTime();
 
        if(ip==null||ip==""||port==null||port==""||bsMac==null||bsMac==""){
            return ApiResponseResult.failure("ip或端口号或mac地址都不能为空");
        }
//        if(!ip.matches("^((2((5[0-5])|([0-4]\\d)))|([0-1]?\\d{1,2}))(\\.((2((5[0-5])|([0-4]\\d)))|([0-1]?\\d{1,2}))){3}$")){
//            return ApiResponseResult.failure("请输入正确的ip");
//        }
        if(!port.matches("^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$")) {
            return ApiResponseResult.failure("请输入正确的端口号");
        }
 
        int count = 0;
        // 根据bsMac查找数据库中存在数量,有则修改,无则新增
        count = generalKanBanPageDao.countByBsMac(bsMac);
        if(count==1){
            int row = 0;
            GeneralKanBanPage kanban = generalKanBanPageDao.findByBsMac(bsMac);
            // 手动输入点提交时,path1为空,那么将后台查询到的路径传入前台
            if(path1==" "||StringUtils.isEmpty(path1)){
                if(kanban.getBsPath1()!=" "||StringUtils.isNotEmpty(kanban.getBsPath1())){
                    path1 = kanban.getBsPath1();
                }
                ApiResponseResult.failure("请联系技术人员,配置页面");
            }
            // 手动输入点提交时,nick为空,那么将后台查询到的nick传入前台
            if(nick==""||nick==null){
                nick = kanban.getBsNick();
            }
 
            row = generalKanBanPageDao.update(ip, port, path1, nick, bsMac);
            if(row==1){
                return ApiResponseResult.success();
            }
        }else if(count>1){
            logger.error("根据bsMac查询数据库,有多条数据,请修改!");
            return ApiResponseResult.failure("请联系技术人员!");
        }
 
        // count=0 根据mac没有找到对应的数据,则新增
        generalKanBanPageDao.save(generalKanBanPage);
        return ApiResponseResult.success();
    }
 
    @Override
    public ApiResponseResult selectByBsMac(String bsMac) {
        Map<String,String> map = new HashMap<>();
        GeneralKanBanPage kanBanPage = generalKanBanPageDao.findByBsMac(bsMac);
        if(kanBanPage==null){
            return ApiResponseResult.failure("请联系技术人员配置页面").data(kanBanPage);
        }
        String ip = kanBanPage.getBsIp();
        String port = kanBanPage.getBsPort();
        String bsPath1 = kanBanPage.getBsPath1();
        String bsPath2 = kanBanPage.getBsPath2();
        String bsPath3 = kanBanPage.getBsPath3();
        String bsPath4 = kanBanPage.getBsPath4();
        String bsPath5 = kanBanPage.getBsPath5();
        String bsMsg = "";
        map.put("ip",ip);
        map.put("port",port);
        if(bsPath1==" "||StringUtils.isEmpty(bsPath1)){
            return ApiResponseResult.failure("缺失页面路径1,请联系技术人员配置页面").data(kanBanPage);
        }
        Boolean checkURL = false;
        if(bsPath1!=null||StringUtils.isNotEmpty(bsPath1)){
            checkURL = checkUrl(ip, port, bsPath1);
            if(checkURL==false){
                bsMsg = "页面路径1连接失败,请检查mes框架配置或ip,端口号以及路径是否正确";
                generalKanBanPageDao.updataByBsMsg(bsMsg, bsMac);
                map.put("msg1",bsMsg);
                map.put("oracle_path1","0");
            }else{
                map.put("msg1","0");
                map.put("oracle_path1",bsPath1);
            }
        }
 
        if(bsPath2!=null||StringUtils.isNotEmpty(bsPath2)){
            checkURL = checkUrl(ip, port, bsPath2);
            if(checkURL==false){
                bsMsg ="页面路径2连接失败,请检查mes框架配置或ip,端口号以及路径是否正确";
                generalKanBanPageDao.updataByBsMsg(bsMsg, bsMac);
                map.put("msg2",bsMsg);
                map.put("oracle_path2","0");
            }else{
                map.put("msg2","0");
                map.put("oracle_path2",bsPath2);
            }
        }else {
            map.put("oracle_path2", "0");
        }
 
        if(bsPath3!=null||StringUtils.isNotEmpty(bsPath3)){
            checkURL = checkUrl(ip, port, bsPath3);
            if(checkURL==false){
                bsMsg ="页面路径3连接失败,请检查mes框架配置或ip,端口号以及路径是否正确";
                generalKanBanPageDao.updataByBsMsg(bsMsg, bsMac);
                map.put("msg3",bsMsg);
                map.put("oracle_path3","0");
            }else{
                map.put("msg3","0");
                map.put("oracle_path3",bsPath3);
            }
        }else {
            map.put("oracle_path3", "0");
        }
 
        if(bsPath4!=null||StringUtils.isNotEmpty(bsPath4)){
            checkURL = checkUrl(ip, port, bsPath4);
            if(checkURL==false){
                bsMsg ="页面路径4连接失败,请检查mes框架配置或ip,端口号以及路径是否正确";
                generalKanBanPageDao.updataByBsMsg(bsMsg, bsMac);
                map.put("msg4",bsMsg);
                map.put("oracle_path4","0");
            }else{
                map.put("msg4","0");
                map.put("oracle_path4",bsPath4);
            }
        }else {
            map.put("oracle_path4", "0");
        }
 
        if(bsPath5!=null||StringUtils.isNotEmpty(bsPath5)){
            checkURL = checkUrl(ip, port, bsPath5);
            if(checkURL==false){
                bsMsg ="页面路径5连接失败,请检查mes框架配置或ip,端口号以及路径是否正确";
                generalKanBanPageDao.updataByBsMsg(bsMsg, bsMac);
                map.put("msg5",bsMsg);
                map.put("oracle_path5","0");
            }else{
                map.put("msg5","0");
                map.put("oracle_path5",bsPath5);
            }
        }else {
            map.put("oracle_path5", "0");
        }
//        Boolean checkUrl = checkUrl(ip, port, path1);
//        if(checkUrl==false){
//            bsMsg = path1+"连接失败,请检查mes框架配置或ip,端口号以及路径是否正确";
//            generalKanBanPageDao.updataByBsMsg(bsMsg, bsMac);
//            return ApiResponseResult.failure(path1+"连接失败,请检查mes框架配置或ip,端口号以及路径是否正确").data(kanBanPage);
//        }
        generalKanBanPageDao.updataByBsMsg(bsMsg, bsMac);
        return ApiResponseResult.success().data(map);
    }
 
 
    public Boolean checkUrl(String ip,String port,String path){
        String url = "http://"+ip+":"+port+"/"+path;
        System.out.println("url:"+url);
        boolean flag = false;
 
        if(null==url||url.length()<=0){
            return flag;
        }
        try{
            HttpURLConnection connection = (HttpURLConnection) new URL(url)
                    .openConnection();
            int state = connection.getResponseCode();
            System.out.println("state: "+state);
            if(state==200){
                flag=true;
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return flag;
    }
 
 
}