同步space定时任务

This commit is contained in:
xiejunyu
2022-05-22 23:40:37 +08:00
parent b352fe9490
commit 51de18a8bb
5 changed files with 316 additions and 28 deletions
@@ -173,10 +173,10 @@ public class ProjectNameInfoEOController extends JeroController<ProjectNameInfoE
*
* @return
*/
@AutoLog(value = "项目名信息表-space")
@ApiOperation(value="项目名信息表-space", notes="项目名信息表-space")
@RequestMapping(value = "/getSpaceInfo", method = RequestMethod.POST)
public void getSpaceInfo(@RequestParam(name="cut",required=true) String cut) {
projectNameInfoEOService.getSpaceInfo(cut);
}
// @AutoLog(value = "项目名信息表-space")
// @ApiOperation(value="项目名信息表-space", notes="项目名信息表-space")
// @RequestMapping(value = "/getSpaceInfo", method = RequestMethod.POST)
// public void getSpaceInfo(@RequestParam(name="cut",required=true) String cut) {
// projectNameInfoEOService.getSpaceInfo(cut);
// }
}
@@ -61,5 +61,5 @@ public interface IProjectNameInfoEOService extends IService<ProjectNameInfoEO> {
void getSpaceInfo(String cut);
//void getSpaceInfo(String cut);
}
@@ -1,23 +1,15 @@
package com.jero.modules.project.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.project.entity.ProjectNameInfoEO;
import com.jero.modules.project.entity.ProjectYearNameInfoEO;
import com.jero.modules.project.mapper.ProjectNameInfoEOMapper;
import com.jero.modules.project.service.IProjectNameInfoEOService;
import com.jero.modules.space.service.SpaceServiceImpl;
import com.jero.modules.system.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
* @Description: 项目名信息表
@@ -106,14 +98,14 @@ public class ProjectNameInfoEOServiceImpl extends ServiceImpl<ProjectNameInfoEOM
return projectNameAndYear;
}
@Override
/* @Override
public void getSpaceInfo(String cut){
String jsonData ="";
try {
jsonData = spaceService.getSign();
if(StringUtils.isNotBlank(jsonData)) {
//静态测试数据
/* jsonData = "{\n" +
*//* jsonData = "{\n" +
" \"resultData\": [\n" +
" {\n" +
" \"modelCode\": \"ES8_00\",\n" +
@@ -272,7 +264,7 @@ public class ProjectNameInfoEOServiceImpl extends ServiceImpl<ProjectNameInfoEOM
" ],\n" +
" \"resultCode\": \"WL-0000\",\n" +
" \"resultDesc\": \"Success\"\n" +
"}";*/
"}";*//*
JSONObject result = (JSONObject) JSON.parse(jsonData);
JSONArray resultData = result.getJSONArray("resultData");
@@ -326,6 +318,6 @@ public class ProjectNameInfoEOServiceImpl extends ServiceImpl<ProjectNameInfoEOM
} catch (Exception e) {
e.printStackTrace();
}
}
}*/
}
@@ -0,0 +1,305 @@
package com.jero.modules.space.job;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.project.entity.ProjectNameInfoEO;
import com.jero.modules.project.entity.ProjectYearNameInfoEO;
import com.jero.modules.project.mapper.ProjectNameInfoEOMapper;
import com.jero.modules.project.service.impl.ProjectNameInfoEOServiceImpl;
import com.jero.modules.project.service.impl.ProjectYearNameInfoEOServiceImpl;
import com.jero.modules.space.service.SpaceServiceImpl;
import com.jero.modules.system.util.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
@Slf4j
public class SpaceJobHandler implements Job {
@Autowired
private ProjectNameInfoEOServiceImpl projectNameInfoEOService;
@Autowired
private ProjectNameInfoEOMapper projectNameInfoEOMapper;
@Autowired
private SpaceServiceImpl spaceService;
@Autowired
private ProjectYearNameInfoEOServiceImpl projectYearNameInfoEOService;
/*String jsonData = "{\n" +
" \"resultData\": [\n" +
" {\n" +
" \"modelCode\": \"ES8_00\",\n" +
" \"modelName\": \"ES8\",\n" +
" \"hardwarePltCode\": \"mhp_npa\",\n" +
" \"hardwarePltName\": \"NPA\",\n" +
" \"softwarePltCode\": \"msp_nt1\",\n" +
" \"softwarePltName\": \"NT1\",\n" +
" \"modelYearInfoList\": [\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1\",\n" +
" \"yearName\": \"G1.1\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.2\",\n" +
" \"yearName\": \"G1.2\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.3\",\n" +
" \"yearName\": \"G1.3\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.f\",\n" +
" \"yearName\": \"G1.F\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.f.e\",\n" +
" \"yearName\": \"G1.F.E\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_my2018\",\n" +
" \"yearName\": \"MY2018\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.5\",\n" +
" \"yearName\": \"G1.5\"\n" +
" }\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"modelCode\": \"FURY_00\",\n" +
" \"modelName\": \"FURY\",\n" +
" \"hardwarePltCode\": \"mhp_npa\",\n" +
" \"hardwarePltName\": \"NPA\",\n" +
" \"softwarePltCode\": \"msp_nt1\",\n" +
" \"softwarePltName\": \"NT1\",\n" +
" \"modelYearInfoList\": [\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1\",\n" +
" \"yearName\": \"G1.1\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.2\",\n" +
" \"yearName\": \"G1.2\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.3\",\n" +
" \"yearName\": \"G1.3\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.f\",\n" +
" \"yearName\": \"G1.F\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.6\",\n" +
" \"yearName\": \"G1.6\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.5\",\n" +
" \"yearName\": \"G1.5\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1.e\",\n" +
" \"yearName\": \"G1.1.E\"\n" +
" }\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"modelCode\": \"FORCE_00\",\n" +
" \"modelName\": \"FORCE\",\n" +
" \"hardwarePltCode\": \"mhp_npb\",\n" +
" \"hardwarePltName\": \"NPB\",\n" +
" \"softwarePltCode\": \"msp_nt2\",\n" +
" \"softwarePltName\": \"NT2\",\n" +
" \"modelYearInfoList\": [\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1\",\n" +
" \"yearName\": \"G1.1\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1.e\",\n" +
" \"yearName\": \"G1.1.E\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.2\",\n" +
" \"yearName\": \"G1.2\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.3\",\n" +
" \"yearName\": \"G1.3\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.f\",\n" +
" \"yearName\": \"G1.F\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.6\",\n" +
" \"yearName\": \"G1.6\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.5\",\n" +
" \"yearName\": \"G1.5\"\n" +
" }\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"modelCode\": \"Gemini_00\",\n" +
" \"modelName\": \"Gemini\",\n" +
" \"hardwarePltCode\": \"mhp_npa\",\n" +
" \"hardwarePltName\": \"NPA\",\n" +
" \"softwarePltCode\": \"msp_nt2\",\n" +
" \"softwarePltName\": \"NT2\",\n" +
" \"modelYearInfoList\": [\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1\",\n" +
" \"yearName\": \"G1.1\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1.e\",\n" +
" \"yearName\": \"G1.1.E\"\n" +
" }\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"modelCode\": \"Pegasus_00\",\n" +
" \"modelName\": \"Pegasus\",\n" +
" \"hardwarePltCode\": \"mhp_npc\",\n" +
" \"hardwarePltName\": \"NPC\",\n" +
" \"softwarePltCode\": \"msp_nt2\",\n" +
" \"softwarePltName\": \"NT2\",\n" +
" \"modelYearInfoList\": [\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1\",\n" +
" \"yearName\": \"G1.1\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_g1.1.e\",\n" +
" \"yearName\": \"G1.1.E\"\n" +
" },\n" +
" {\n" +
" \"yearCode\": \"mp_G1.1.RH\",\n" +
" \"yearName\": \"G1.1.RH\"\n" +
" }\n" +
" ]\n" +
" }\n" +
" ],\n" +
" \"resultCode\": \"WL-0000\",\n" +
" \"resultDesc\": \"Success\"\n" +
"}";*/
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
String jsonData ="";
try {
jsonData = spaceService.getSign();
if(StringUtils.isNotBlank(jsonData)) {
JSONObject result = (JSONObject) JSON.parse(jsonData);
JSONArray resultData = result.getJSONArray("resultData");
String modelName = "";//项目名称
String hardwarePltName = "";//车型平台
String softwarePltName = "";//数字平台
//获取resultData中所需的数据
for (int i = 0; i < resultData.size(); i++) {
JSONObject jsonObject = resultData.getJSONObject(i);
modelName = jsonObject.getString("modelName");//项目名称
hardwarePltName = jsonObject.getString("hardwarePltName");//车型平台
softwarePltName = jsonObject.getString("softwarePltName");//数字平台
//设置年款名
JSONArray modelYearInfoJson = jsonObject.getJSONArray("modelYearInfoList");
//校验重复:项目名,车型平台,数字平台
QueryWrapper<ProjectNameInfoEO> nameInfoEOQueryWrapper = new QueryWrapper<>();
nameInfoEOQueryWrapper.eq("project_name",modelName)
.eq("vehicle_platform",hardwarePltName)
.eq("digital_platform",softwarePltName);
Integer nameInfoEOSameCount = projectNameInfoEOMapper.selectCount(nameInfoEOQueryWrapper);
if(nameInfoEOSameCount == 0) {//没有重复的,保存
String nameInfoId = UUID.randomUUID().toString().replace("-", "");
ProjectNameInfoEO projectNameInfoEO = new ProjectNameInfoEO();
projectNameInfoEO.setId(nameInfoId);
projectNameInfoEO.setProjectName(modelName);
projectNameInfoEO.setVehiclePlatform(hardwarePltName);
projectNameInfoEO.setDigitalPlatform(softwarePltName);
//保存
projectNameInfoEOService.save(projectNameInfoEO);
for (int j = 0; j < modelYearInfoJson.size(); j++) {
JSONObject modelYearInfo = modelYearInfoJson.getJSONObject(j);
String yearName = modelYearInfo.getString("yearName");
ProjectYearNameInfoEO projectYearNameInfoEO = new ProjectYearNameInfoEO();
projectYearNameInfoEO.setProjectNameId(nameInfoId);
projectYearNameInfoEO.setYearName(yearName);
//保存
projectYearNameInfoEOService.save(projectYearNameInfoEO);
}
}else {//有重复的,校验年款
List<ProjectNameInfoEO> projectNameInfoDataList = projectNameInfoEOService.list(nameInfoEOQueryWrapper);
String nameInfoId = projectNameInfoDataList.stream().map(e -> e.getId()).collect(Collectors.toList()).get(0);
List<ProjectYearNameInfoEO> yearNameInfoEOList = new ArrayList<>();
for (int j = 0; j < modelYearInfoJson.size(); j++) {
JSONObject modelYearInfo = modelYearInfoJson.getJSONObject(j);
String yearName = modelYearInfo.getString("yearName");
ProjectYearNameInfoEO projectYearNameInfoEO = new ProjectYearNameInfoEO();
projectYearNameInfoEO.setProjectNameId(nameInfoId);
projectYearNameInfoEO.setYearName(yearName);
yearNameInfoEOList.add(projectYearNameInfoEO);
}
//同步过来的数据里的年款
List<String> yearNameList = yearNameInfoEOList.stream().filter(e -> e.getProjectNameId().equals(nameInfoId)).map(e -> e.getYearName()).collect(Collectors.toList());
//查数据里的年款
QueryWrapper<ProjectYearNameInfoEO> yearNameInfoEOQueryWrapper = new QueryWrapper<>();
yearNameInfoEOQueryWrapper.eq("project_name_id",nameInfoId);
List<ProjectYearNameInfoEO> yearNameInfoDataList = projectYearNameInfoEOService.list(yearNameInfoEOQueryWrapper);
List<String> yearNameDataList = yearNameInfoDataList.stream().filter(e -> e.getProjectNameId().equals(nameInfoId)).map(e -> e.getYearName()).collect(Collectors.toList());
//获得不同年款
yearNameList.remove(yearNameDataList);
if(yearNameList.size()>0){//存在不同年款
List<ProjectYearNameInfoEO> diffYearNameList = new ArrayList<>();
for (ProjectYearNameInfoEO projectYearNameInfoEO: yearNameInfoEOList) {
if(! yearNameList.contains(projectYearNameInfoEO.getYearName())) {
diffYearNameList.add(projectYearNameInfoEO);
}
}
projectYearNameInfoEOService.saveBatch(yearNameInfoDataList);
}
}
// if(CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("从Space获取项目名称相关数据,成功保存");
// }else{
// throw new JeroBootException("Get the data related to the project name from Space and save it successfully.");
// }
}
}else{
// if(CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("从Space获取项目名称相关数据为空");
// }else{
// throw new JeroBootException("Data related to obtaining project name from Space is empty.");
// }
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -77,21 +77,12 @@ public class SpaceServiceImpl implements ISpaceService {
String sign = sign(paramMap,appSecret);//签名字符串
paramMap.put("sign",sign);//签名字符串
// paramMap.put("appId", appId);//在Program Space中注册的appId
// paramMap.put("bizData", "{\"module\":\"GRP\"}");//业务参数
// paramMap.put("timestamp", "1652965354000");//请求时间
//
//// String sign = sign(paramMap,appSecret);//签名字符串
// paramMap.put("sign","148EF05BAB45F6D1213DA506D1D04E1B");//签名字符串
// String response = HttpUtil.post(domainUrl, paramMap);
String response = HttpRequest.post(domainUrl)
.header("Content-Type", "application/x-www-form-urlencoded")
.form(paramMap)//表单内容
.timeout(20000)//超时,毫秒
.execute().body();
// String response = HttpRequestUtil.getResponseOfPOST(domainUrl, headerMap, null);
return response;
}