integrated_traffic/src/main/java/com/zcloud/util/PLSUtil.java

362 lines
14 KiB
Java
Raw Normal View History

package com.zcloud.util;
2024-01-25 14:20:05 +08:00
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.zcloud.entity.Camera;
import com.zcloud.entity.Card;
import com.zcloud.entity.EmployeeData;
import com.zcloud.entity.PageData;
import com.zcloud.service.corp.CorpPlsInfoService;
import com.zcloud.service.system.UsersService;
import okhttp3.*;
2024-01-25 14:20:05 +08:00
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
2024-01-25 14:20:05 +08:00
import org.springframework.beans.factory.annotation.Value;
2024-01-25 14:42:22 +08:00
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
2024-01-25 14:20:05 +08:00
import org.springframework.stereotype.Component;
2024-01-25 14:42:22 +08:00
import org.springframework.web.client.RestTemplate;
2024-01-25 14:20:05 +08:00
import javax.annotation.PostConstruct;
import java.io.IOException;
2024-01-25 14:20:05 +08:00
import java.nio.charset.StandardCharsets;
import java.util.*;
2024-01-25 14:20:05 +08:00
@Component
public class PLSUtil {
2024-01-25 14:20:05 +08:00
private static final Logger logger = LoggerFactory.getLogger(PLSUtil.class);
private static CorpPlsInfoService corpplsinfoService;
private static UsersService usersService;
// 后台地址
public static HashMap<String, String> BAKEADDR = new HashMap<>();
2024-01-25 14:42:22 +08:00
private static RestTemplate restTemplate;
@Autowired
2024-01-25 14:42:22 +08:00
public void setCorpplsinfoService(CorpPlsInfoService corpplsinfoServicebean, UsersService usersServicebean,RestTemplate restTemplatebean) {
2024-01-25 14:20:05 +08:00
corpplsinfoService = corpplsinfoServicebean;
usersService = usersServicebean;
2024-01-25 14:42:22 +08:00
restTemplate = restTemplatebean;
}
/**
* @Description:
* @Author: dearLin
* @Date: 2024/1/25/025 14:37
* @Param: [java.lang.String, java.lang.Integer, java.lang.Integer] [keywords, currentPage, showCount]
* @Return: com.alibaba.fastjson.JSONObject
*/
public static JSONObject getRyRegionList(String keywords,Integer currentPage,Integer showCount) throws Exception {
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", getToken());
HttpEntity<JSONObject> httpEntity = new HttpEntity<>(headers);
ResponseEntity<JSONObject> exchange = restTemplate.exchange(PLSUtil.BAKEADDR.get(Jurisdiction.getCORPINFO_ID()) + "/region/region/list?pageNum=" +
currentPage +
"&pageSize=" + showCount +
"&str=" + keywords + "&type=0", HttpMethod.GET, httpEntity, JSONObject.class);
return exchange.getBody();
2024-01-25 14:20:05 +08:00
}
2024-01-25 14:42:22 +08:00
2024-01-25 14:20:05 +08:00
@PostConstruct
private void initBakeAddr() throws Exception {
List<PageData> dataList = corpplsinfoService.listAll(new PageData());
dataList.forEach(item -> {
BAKEADDR.put(item.getString("CORPINFO_ID"), item.getString("POST_URL"));
});
}
/**
2024-01-25 14:20:05 +08:00
* @Description: token
* @Author: dearLin
* @Date: 2024/1/24/024 9:59
* @Param: [] []
* @Return: java.lang.String
*/
2024-01-25 14:20:05 +08:00
public static String getToken() throws Exception {
PageData pd = new PageData();
pd.put("CORPINFO_ID", Jurisdiction.getCORPINFO_ID());
pd = corpplsinfoService.findById(pd);
String token = pd.getString("TOKEN");
2024-01-25 14:20:05 +08:00
String backAddr = pd.getString("POST_URL");
String expireTime = pd.getString("EXPIRE_TIME");
String userName = pd.getString("ACCOUNT");
String passWord = pd.getString("PASSWORD");
String loginUrl = pd.getString("POST_URL") + "/auth/login";
if (token == null || expireTime == null || expireTime.trim().isEmpty() || DateUtil.compareDate(DateUtil.getTime(), expireTime)) {
JSONObject loginPayload = new JSONObject();
loginPayload.put("username", userName);
loginPayload.put("password", passWord);
loginPayload.put("isPresentationMode", "2");
2024-01-25 14:20:05 +08:00
PageData response = sendPostHttpRequest(loginUrl, loginPayload.toJSONString(), null);
if (response != null) {
PageData valueData = JSONObject.parseObject(response.getString("data"), PageData.class);
token = valueData.getString("access_token");
String newExpireTime = DateUtil.getAfterHourDate("12");
pd.put("TOKEN", token);
pd.put("EXPIRE_TIME", newExpireTime);
corpplsinfoService.edit(pd);
2024-01-25 14:20:05 +08:00
return token;
} else {
2024-01-25 14:20:05 +08:00
System.out.println("登录失败");
}
}
2024-01-25 14:20:05 +08:00
return token;
}
2024-01-11 18:02:48 +08:00
/**
2024-01-25 14:20:05 +08:00
* @Description:
* @Author: dearLin
* @Date: 2024/1/24/024 10:00
* @Param: [com.zcloud.entity.PageData] [user]
* @Return: void
*/
2024-01-25 14:20:05 +08:00
public static boolean hasCardNumber(PageData user) throws Exception {
// 根据 定位卡号获取对应的人
String url = BAKEADDR.get(Jurisdiction.getCORPINFO_ID()) + "/deploy/card/peopleDisplay/" + user.getString("CARDNO");
PageData response = sendGetHttpRequest(url, null, getToken());
if (response != null) {
if (!"200".equals(response.getString("code"))) {
return false;
}
2024-01-25 14:20:05 +08:00
List<PageData> dataList = JSONObject.parseArray(response.getString("data"), PageData.class);
return dataList.isEmpty();
}
2024-01-25 14:20:05 +08:00
return false;
}
/**
2024-01-25 14:20:05 +08:00
* @Description:
* @Author: dearLin
* @Date: 2024/1/24/024 10:00
* @Param: [com.zcloud.entity.PageData] [user]
* @Return: void
*/
2024-01-25 14:20:05 +08:00
public static PageData getCardNumberPeople(PageData user) throws Exception {
// 根据 定位卡号获取对应的人
String url = BAKEADDR.get(Jurisdiction.getCORPINFO_ID()) + "/deploy/card/peopleDisplay/" + user.getString("CARDNO");
PageData response = sendGetHttpRequest(url, null, getToken());
if (response != null) {
if (!"200".equals(response.getString("code"))) {
return null;
}
2024-01-25 14:20:05 +08:00
List<PageData> dataList = JSONObject.parseArray(response.getString("data"), PageData.class);
return dataList.size() > 0 ? dataList.get(0) : null;
}
2024-01-25 14:20:05 +08:00
return null;
}
/**
2024-01-25 14:20:05 +08:00
* @Description:
* @Author: dearLin
* @Date: 2024/1/24/024 10:00
* @Param: [com.zcloud.entity.PageData] [user]
* @Return: void
*/
2024-01-25 14:20:05 +08:00
public static boolean saveUser(PageData user) throws Exception {
String url = BAKEADDR.get(Jurisdiction.getCORPINFO_ID()) + "/deploy/psnmgt/insertPsnIfon";
JSONObject loginPayload = new JSONObject();
loginPayload.put("name", user.getString("NAME"));
loginPayload.put("cardNo", user.getString("CARDNO"));
loginPayload.put("empNo", "");
loginPayload.put("sex", "");
loginPayload.put("certType", "");
loginPayload.put("certNo", "");
loginPayload.put("office", "");
loginPayload.put("staffType", "");
loginPayload.put("phone", "");
loginPayload.put("empId", "");
loginPayload.put("age", "");
loginPayload.put("addr", "");
loginPayload.put("remark", "");
loginPayload.put("enterpriseName", "");
loginPayload.put("officeName", "");
loginPayload.put("jobsName", "");
loginPayload.put("deptName", "");
loginPayload.put("deptId", "");
loginPayload.put("avatar", "");
PageData response = sendPostHttpRequest(url, loginPayload.toJSONString(), getToken());
return "200".equals(response.getString("code"));
}
/**
2024-01-25 14:20:05 +08:00
* @Description:
* @Author: dearLin
* @Date: 2024/1/24/024 10:00
* @Param: [com.zcloud.entity.PageData] [user]
* @Return: void
*/
2024-01-25 14:20:05 +08:00
public static boolean editUser(PageData user) throws Exception {
String url = BAKEADDR.get(Jurisdiction.getCORPINFO_ID()) + "/deploy/psnmgt/updPsnInfoById";
JSONObject loginPayload = new JSONObject();
loginPayload.put("name", user.getString("NAME"));
loginPayload.put("psnId", user.getString("PLS_ID"));
loginPayload.put("cardNo", user.getString("CARDNO"));
loginPayload.put("empNo", "");
loginPayload.put("sex", "");
loginPayload.put("certType", "");
loginPayload.put("certNo", "");
loginPayload.put("office", "");
loginPayload.put("staffType", "");
loginPayload.put("phone", "");
loginPayload.put("empId", "");
loginPayload.put("age", "");
loginPayload.put("addr", "");
loginPayload.put("remark", "");
loginPayload.put("enterpriseName", "");
loginPayload.put("officeName", "");
loginPayload.put("jobsName", "");
loginPayload.put("deptName", "");
loginPayload.put("deptId", "");
loginPayload.put("avatar", "");
PageData response = sendPostHttpRequest(url, loginPayload.toJSONString(), getToken());
return "200".equals(response.getString("code"));
}
public static boolean removeUser(PageData user) throws Exception {
String url = BAKEADDR.get(Jurisdiction.getCORPINFO_ID()) + "/deploy/psnmgt";
PageData removeUser = usersService.findById(user);
PageData response = sendDeleteHttpRequest(url, Long.parseLong(removeUser.getString("PLS_ID")), getToken());
return "200".equals(response.getString("code"));
}
/**
2024-01-25 14:20:05 +08:00
* get
*
* @param url
* @param queryParams
* @param token
* @return PageData
* @throws IOException
*/
2024-01-25 14:20:05 +08:00
private static PageData sendGetHttpRequest(String url, Map<String, String> queryParams, String token) throws IOException {
OkHttpClient client = new OkHttpClient();
HttpUrl.Builder httpBuilder = Objects.requireNonNull(HttpUrl.parse(url)).newBuilder();
//封装请求参数
if (queryParams != null) {
for (Map.Entry<String, String> param : queryParams.entrySet()) {
httpBuilder.addQueryParameter(param.getKey(), param.getValue());
}
}
2024-01-25 14:20:05 +08:00
//设置请求的url
Request.Builder requestBuilder = new Request.Builder()
.url(httpBuilder.build());
2024-01-25 14:20:05 +08:00
if (token != null && !token.isEmpty()) {
requestBuilder.addHeader("Authorization", "Bearer " + token);
}
2024-01-25 14:20:05 +08:00
Request request = requestBuilder.build();
Response execute = client.newCall(request).execute();
if (execute.code() != 200) {
logger.error("get请求失败返回状态码{},url:{}", execute.code(), url);
throw new RuntimeException("get请求失败");
}
2024-01-25 14:20:05 +08:00
return JSONObject.parseObject(execute.body().string(), PageData.class);
//发送请求并返回响应数据
}
/**
* post
2024-01-25 14:20:05 +08:00
*
* @param url
* @param jsonPayload
* @param token
* @return
* @throws IOException
*/
2024-01-25 14:20:05 +08:00
private static PageData sendPostHttpRequest(String url, String jsonPayload, String token) throws IOException {
OkHttpClient client = new OkHttpClient();
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(JSON, jsonPayload);
Request.Builder builder = new Request.Builder() // 构建一个新的Request对象。
.url(url)// 设置请求的URL。
.post(body);// 设置请求的方法为POST并设置请求体。
//构建请求头
if (token != null && !token.isEmpty()) {// 检查token是否存在且不为空。
builder.addHeader("Authorization", "Bearer " + token);
}
// 构建请求
Request request = builder.build();
2024-01-25 14:20:05 +08:00
Response execute = client.newCall(request).execute();
if (execute.code() != 200) {
logger.error("post请求失败返回状态码{},url:{}", execute.code(), url);
throw new RuntimeException("get请求失败");
}
PageData pageData = JSONObject.parseObject(execute.body().string(), PageData.class);
if (!"200".equals(pageData.getString("code"))) {
logger.error("post请求失败返回值{},url:{}", pageData.getString("msg"), url);
}
return pageData;
//发起请求并响应数据
}
/**
* PUT
2024-01-25 14:20:05 +08:00
*
* @param url
* @param jsonPayload
* @param token
* @return
* @throws IOException
*/
2024-01-25 14:20:05 +08:00
private static Response sendPutHttpRequest(String url, String jsonPayload, String token) throws IOException {
2024-01-11 18:02:48 +08:00
OkHttpClient client = new OkHttpClient();
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(JSON, jsonPayload);
Request.Builder builder = new Request.Builder()
.url(url)
.put(body);
2024-01-11 18:02:48 +08:00
if (token != null && !token.isEmpty()) {
builder.addHeader("Authorization", "Bearer " + token);
}
Request request = builder.build();
2024-01-11 18:02:48 +08:00
return client.newCall(request).execute();
}
/**
* delete
2024-01-25 14:20:05 +08:00
*
* @param url
* @param camIds
* @param token
* @return
* @throws IOException
*/
2024-01-25 14:20:05 +08:00
private static PageData sendDeleteHttpRequest(String url,Long camIds, String token) throws IOException {
OkHttpClient client = new OkHttpClient();
//将要删除的Id列表转换为逗号分隔的字符串
//构建完整的url
2024-01-25 14:20:05 +08:00
url = url + "/" + camIds;
Request.Builder builderBuilder = new Request.Builder()
.url(url)
.delete();
if (token != null && !token.isEmpty()) {
builderBuilder.addHeader("Authorization", "Bearer " + token);
}
Request request = builderBuilder.build();
2024-01-25 14:20:05 +08:00
Response execute = client.newCall(request).execute();
if (execute.code() != 200) {
logger.error("post请求失败返回状态码{},url:{}", execute.code(), url);
throw new RuntimeException("get请求失败");
}
PageData pageData = JSONObject.parseObject(execute.body().string(), PageData.class);
if (!"200".equals(pageData.getString("code"))) {
logger.error("post请求失败返回值{},url:{}", pageData.getString("msg"), url);
}
return pageData;
}
}