|
|
@@ -9,7 +9,11 @@ import com.takai.common.enums.UserTypeEnum;
|
|
|
import com.takai.common.utils.DateUtils;
|
|
|
import com.takai.common.utils.SecurityUtils;
|
|
|
import com.takai.common.utils.StringUtils;
|
|
|
-import com.takai.system.service.IJkApiService;
|
|
|
+import com.takai.system.domain.SysProject;
|
|
|
+import com.takai.system.domain.SysProjectStaff;
|
|
|
+import com.takai.system.domain.vo.Member;
|
|
|
+import com.takai.system.domain.vo.ProjectWebApiBo;
|
|
|
+import com.takai.system.service.*;
|
|
|
import com.takai.common.annotation.DataSource;
|
|
|
import com.takai.common.config.JkConfig;
|
|
|
import com.takai.common.core.domain.entity.SysDept;
|
|
|
@@ -17,9 +21,6 @@ import com.takai.common.core.domain.entity.SysUser;
|
|
|
import com.takai.common.core.redis.RedisCache;
|
|
|
import com.takai.common.enums.DataSourceType;
|
|
|
import com.takai.system.domain.SysPost;
|
|
|
-import com.takai.system.service.ISysDeptService;
|
|
|
-import com.takai.system.service.ISysPostService;
|
|
|
-import com.takai.system.service.ISysUserService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import okhttp3.*;
|
|
|
import org.slf4j.Logger;
|
|
|
@@ -62,6 +63,12 @@ public class JkApiServiceImpl implements IJkApiService {
|
|
|
@Autowired
|
|
|
JkConfig jkConfig;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ISysProjectService projectService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ISysProjectStaffService projectStaffService;
|
|
|
+
|
|
|
public static final String BEARER = "Bearer";
|
|
|
|
|
|
public static final String PARAM_ST = "startTime";
|
|
|
@@ -106,6 +113,14 @@ public class JkApiServiceImpl implements IJkApiService {
|
|
|
|
|
|
private static final OkHttpClient client = new OkHttpClient();
|
|
|
|
|
|
+ public static final String HXG_PROJECT_AND_STAFF = "用户";
|
|
|
+
|
|
|
+ public static final String HJL_PROJECT_AND_STAFF = "用户";
|
|
|
+
|
|
|
+ public static final String HXG = "f47ac10b58cc4372a5670e06f141669d";
|
|
|
+
|
|
|
+ public static final String HJL = "a34851c530ee0d07d1154beb47bb93dd";
|
|
|
+
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -216,6 +231,54 @@ public class JkApiServiceImpl implements IJkApiService {
|
|
|
return postList;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void getHxgProjectAndStaff() throws IOException {
|
|
|
+ JSONArray dataList = getProjectApiData(jkConfig.getHxgProjectAndStaff(),HXG_PROJECT_AND_STAFF);
|
|
|
+ buildAndSaveSysProjectAndStaff(dataList,HXG);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void getHjlProjectAndStaff() throws IOException {
|
|
|
+ JSONArray dataList = getProjectApiData(jkConfig.getHjlProjectAndStaff(),HJL_PROJECT_AND_STAFF);
|
|
|
+ buildAndSaveSysProjectAndStaff(dataList,HJL);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void buildAndSaveSysProjectAndStaff(JSONArray jsonArray,String sourceFrom) {
|
|
|
+ try {
|
|
|
+ // ========== 核心解析:JSON数组 → List<Project> ==========
|
|
|
+ List<ProjectWebApiBo> projectList = JSON.parseArray(String.valueOf(jsonArray), ProjectWebApiBo.class);
|
|
|
+ // 遍历解析结果,验证数据
|
|
|
+ for (ProjectWebApiBo project : projectList) {
|
|
|
+ SysProject sysProject = new SysProject();
|
|
|
+ sysProject.setProjectPid(project.getProCode());
|
|
|
+ sysProject.setProjectName(project.getProName());
|
|
|
+ sysProject.setSourceFrom(sourceFrom);
|
|
|
+ SysProject dbProject = projectService.selectSysProjectByProjectPid(project.getProCode());
|
|
|
+ if(null == dbProject) {
|
|
|
+ projectService.insertSysProject(sysProject);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (Member member : project.getMemberList()) {
|
|
|
+ SysProjectStaff sysProjectStaff = new SysProjectStaff();
|
|
|
+ SysUser sysUser = sysUserService.selectUserByUserName(member.getAccountNo());
|
|
|
+ sysProjectStaff.setProjectPid(project.getProCode());
|
|
|
+ sysProjectStaff.setProjectName(project.getProName());
|
|
|
+ sysProjectStaff.setUserId(null != sysUser ? sysUser.getUserId() : null);
|
|
|
+ sysProjectStaff.setRoleId(null != sysUser ? sysUser.getRoleId() : null);
|
|
|
+ SysProjectStaff dbStaff = projectStaffService.selectSysProjectStaff(sysProjectStaff);
|
|
|
+ if(null == dbStaff) {
|
|
|
+ projectStaffService.insertSysProjectStaff(sysProjectStaff);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ System.err.println("FastJSON2 解析失败:" + e.getMessage());
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public List<JSONObject> getApiData(String url,String objectName) throws IOException {
|
|
|
List<JSONObject> objectList = new ArrayList<>();
|
|
|
int page = 1;
|
|
|
@@ -258,6 +321,34 @@ public class JkApiServiceImpl implements IJkApiService {
|
|
|
return objectList;
|
|
|
}
|
|
|
|
|
|
+ public JSONArray getProjectApiData(String url,String objectName) throws IOException {
|
|
|
+ JSONArray jsonArray = new JSONArray();
|
|
|
+ logger.info("获取建科"+objectName+"请求url:" + url);
|
|
|
+ Request request = buildPostRequest(url);
|
|
|
+ try {
|
|
|
+ Response response = client.newCall(request).execute();
|
|
|
+ String responseBody = response.body().string();
|
|
|
+ logger.info("获取建科项目"+objectName+"返回:" + responseBody);
|
|
|
+
|
|
|
+ if (!response.isSuccessful()) {
|
|
|
+ throw new IOException("获取建科项目"+objectName+"信息失败 " + responseBody);
|
|
|
+ }
|
|
|
+ JSONObject jsonObject =JSON.parseObject(responseBody);
|
|
|
+ logger.info("获取建科项目"+objectName+"返回信息:" + jsonObject.toJSONString());
|
|
|
+ //“0”为成功其余均为失败
|
|
|
+ String code = jsonObject.getString("code");
|
|
|
+ if (code == null) {
|
|
|
+ code = jsonObject.getString("statusCode");
|
|
|
+ }
|
|
|
+ if (CODE_SUCCESS.equals(code) ||"200".equals(code)) {
|
|
|
+ jsonArray = jsonObject.getJSONArray(DATA);
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ throw new IOException("获取建科用项目"+objectName+"信息失败 ", e);
|
|
|
+ }
|
|
|
+ return jsonArray;
|
|
|
+ }
|
|
|
+
|
|
|
private boolean doUserCallback(JSONObject dataObject) {
|
|
|
String ids = "";
|
|
|
JSONArray jsonArray = dataObject.getJSONArray(LIST);
|
|
|
@@ -368,6 +459,23 @@ public class JkApiServiceImpl implements IJkApiService {
|
|
|
logger.info("请求body:{}", requestBodyJson);
|
|
|
return request;
|
|
|
}
|
|
|
+ private Request buildPostRequest(String url) {
|
|
|
+ Map<String, Object> requestBodyMap = new HashMap<>();
|
|
|
+ requestBodyMap.put("projectCode", "");
|
|
|
+ // 将 Map 转换为 JSON 字符串
|
|
|
+ String requestBodyJson = JSON.toJSONString(requestBodyMap);
|
|
|
+
|
|
|
+ // 构建请求体
|
|
|
+ RequestBody body = RequestBody.create(JSON_UTF8,requestBodyJson);
|
|
|
+ Request request = new Request.Builder()
|
|
|
+ .addHeader("accept", "*/*")
|
|
|
+ .addHeader("Content-Type", "application/json")
|
|
|
+ .post(body)
|
|
|
+ .url(url).build();
|
|
|
+ logger.info("请求head:{}", request.headers().toString());
|
|
|
+ logger.info("请求body:{}", requestBodyJson);
|
|
|
+ return request;
|
|
|
+ }
|
|
|
|
|
|
private Request buildTokenRequest(String code, String redirectUrl) {
|
|
|
String completeUrl = jkConfig.getIamTokenUrl() + "?" +PARAM_GRANT_TYPE + "=" + GRANT_TYPE_AC
|