add: 添加模块单元数据接收推送接口

This commit is contained in:
zhangyanduan
2022-09-21 17:06:26 +08:00
parent 13c8fb50b0
commit 1d83907924
7 changed files with 344 additions and 8 deletions
@@ -3,13 +3,14 @@ package com.adc.da.slrs.sarModelTree.controller;
import com.adc.da.http.ResponseMessage;
import com.adc.da.http.Result;
import com.adc.da.slrs.sarModelTree.entity.SarModuleTree;
import com.adc.da.slrs.sarModelTree.service.ISarModelTreeService;
import com.adc.da.slrs.sarModelTree.service.ISarModuleTreeService;
import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.Head;
import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.ResponseDto;
import com.adc.da.util.utils.StringUtils;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.adc.da.slrs.sarModelTree.entity.SarModelTree;
@@ -31,6 +32,9 @@ import java.util.List;
@RequestMapping("/${restPath}/sarModelTree")
public class SarModelTreeController extends BaseController<SarModelTree> {
private static final Logger logger = LoggerFactory.getLogger(SarModelTreeController.class);
@Autowired
private ISarModelTreeService iSarModelTreeService;
@@ -82,6 +86,13 @@ public class SarModelTreeController extends BaseController<SarModelTree> {
return responseDto;
}
@ApiOperation("同步模块单元信息")
@PostMapping("/syncModelDto")
public ResponseDto syncModelDto(@RequestBody String jsonStr){
logger.info("===========================开始接收模块单元数据==================================");
ResponseDto responseDto = iSarModelTreeService.syncModelTreeDataToDB(jsonStr);
logger.info("===========================接收模块单元数据结束==================================");
return responseDto;
}
}
@@ -9,4 +9,29 @@ public class ResponseResult {
private String MESSAGE; //接口信息 失败时,详细的失败原因
private String STATUS; //接口状态 B(失败),S(成功)
public String getGUID() {
return GUID;
}
public void setGUID(String GUID) {
this.GUID = GUID;
}
public String getMESSAGE() {
return MESSAGE;
}
public void setMESSAGE(String MESSAGE) {
this.MESSAGE = MESSAGE;
}
public String getSTATUS() {
return STATUS;
}
public void setSTATUS(String STATUS) {
this.STATUS = STATUS;
}
}
@@ -10,62 +10,76 @@ import lombok.Data;
@TableName("sar_module_tree")
public class SarModuleTree {
//序列号
@SerializedName("GUID")
@TableId
private String guid;
//系统
@SerializedName("FTVSTYPE1")
@TableField("FTVSTYPE1")
private String ftvstype1;
//模块团队代号
@SerializedName("FTVSTYPE2")
@TableField("FTVSTYPE2")
private String ftvstype2;
//模块团队名称
@SerializedName("FTVSTYPE3")
@TableField("FTVSTYPE3")
private String ftvstype3;
//模块结构家族SF
@SerializedName("FTVSTYPE4")
@TableField("FTVSTYPE4")
private String ftvstype4;
//模块结构元素SE
@SerializedName("FTVSTYPE5")
@TableField("FTVSTYPE5")
private String ftvstype5;
//结构单元SU
@SerializedName("FTVSTYPE6")
@TableField("FTVSTYPE6")
private String ftvstype6;
//功能分组码VSG
@SerializedName("FTVSTYPE7")
@TableField("FTVSTYPE7")
private String ftvstype7;
//关联特征族代号(驱动要素)
@SerializedName("FTVSTYPE9")
@TableField("FTVSTYPE9")
private String ftvstype9;
//是否需要额外描述
@SerializedName("ACLUSERNAMES")
@TableField("ACLUSERNAMES")
private String aclusernames;
//操作人
@SerializedName("CREATOR")
@TableField("CREATOR")
private String creator;
//SF_ID
@SerializedName("SERIESID")
@TableField("SERIESID")
private String seriesid; //SF_ID
//SE_ID
@SerializedName("RESERVED")
@TableField("RESERVED")
private String reserved; //SE_ID
//SU_ID
@SerializedName("STARTED")
@TableField("STARTED")
private String started; //SU_ID
//操作时间
@SerializedName("CREATIONDATE")
@TableField("CREATIONDATE")
private String creationdate;
@@ -79,4 +93,14 @@ public class SarModuleTree {
@TableField(exist = false)
private String nextCondition;
//列ID
@SerializedName("ROWID")
@TableField(exist = false)
private String rowId;
//产品线分类
@SerializedName("PRODUCTTYPE")
@TableField(exist = false)
private String productType;
}
@@ -1,7 +1,7 @@
package com.adc.da.slrs.sarModelTree.service;
import com.adc.da.slrs.sarModelTree.entity.SarModelTree;
import com.adc.da.slrs.sarVppsTree.entity.SarVppsTree;
import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.ResponseDto;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
@@ -19,4 +19,7 @@ public interface ISarModelTreeService extends IService<SarModelTree> {
List<SarModelTree> getAll(SarModelTree sarModelTree);
List<SarModelTree> recursionGetChildren(SarModelTree parent);
public ResponseDto syncModelTreeDataToDB(String json);
}
@@ -14,4 +14,5 @@ public interface ISarModuleTreeService {
public Head analysisJsonAndStorage(String json);
}
@@ -1,16 +1,29 @@
package com.adc.da.slrs.sarModelTree.service.impl;
import com.adc.da.slrs.sarModelTree.entity.SarModelTree;
import com.adc.da.slrs.sarModelTree.entity.*;
import com.adc.da.slrs.sarModelTree.dao.SarModelTreeDao;
import com.adc.da.slrs.sarModelTree.service.ISarModelTreeService;
import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.Head;
import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.ResponseDto;
import com.adc.da.util.UUIDUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* <p>
@@ -23,6 +36,8 @@ import java.util.stream.Stream;
@Service
public class SarModelTreeServiceImpl extends ServiceImpl<SarModelTreeDao, SarModelTree> implements ISarModelTreeService {
private static final Logger logger = LoggerFactory.getLogger(SarModelTreeServiceImpl.class);
/**
* 查询所有菜单
* @param sarModelTree
@@ -94,4 +109,258 @@ public class SarModelTreeServiceImpl extends ServiceImpl<SarModelTreeDao, SarMod
return collect;
}
@Transactional(rollbackFor = {RuntimeException.class,Exception.class})
@Override
public ResponseDto syncModelTreeDataToDB(String json){
String rootId = "10000";
String rootPID = "根节点";
Head head = new Head();
//构建返回的结果
List<ResponseResult> resultList = new ArrayList<>();
try{
//把字符串转换成对象
JsonObject parse = JsonParser.parseString(json).getAsJsonObject();
//要把jsonObject里的HEAD强转成JsonObject类型
JsonObject HEAD = (JsonObject) parse.get("HEAD");
//因为是最后要取的值了,所以就拿到之后把它转换成String类型
HEAD.get("CONSUMER").getAsString();
//构建head头信息
head.setBIZTRANSACTIONID(HEAD.get("BIZTRANSACTIONID").getAsString());
//获取json中的list
JsonArray list = (JsonArray)parse.get("LIST");
Gson gson = new Gson();
List<SarModuleTree> moduleTreeList = new LinkedList<>();
AtomicInteger successCount = new AtomicInteger();
list.forEach(item->{
JsonObject objectJson=(JsonObject) item;
SarModuleTree sarModuleTree = gson.fromJson(objectJson, SarModuleTree.class);
//返回结果集
String pName = sarModuleTree.getFtvstype1();
String p2Name = sarModuleTree.getFtvstype2();
String p3Name = sarModuleTree.getFtvstype3();
String p4Name = sarModuleTree.getFtvstype4();
String p5Name = sarModuleTree.getFtvstype5();
String p6Name = sarModuleTree.getFtvstype6();
String jgysName = sarModuleTree.getFtvstype9();
String modelType = sarModuleTree.getProductType();
if(StringUtils.equals(modelType,"f0_mssg")){
modelType ="TRUCK";//卡车类
}else{
modelType ="CAR";//乘用车类
}
if(StringUtils.isNotBlank(pName)){
QueryWrapper<SarModelTree> queryP1Wrapper = new QueryWrapper<>();
queryP1Wrapper.eq("NAME",pName);
queryP1Wrapper.eq("MODEL_TYPE",modelType);
queryP1Wrapper.eq("MODEL_LEVEL",1);
queryP1Wrapper.eq("MODEL_PID",rootId);
queryP1Wrapper.eq("DEL_FLAG","1");
List<SarModelTree> p1TreeDataList = this.baseMapper.selectList(queryP1Wrapper);
SarModelTree p1TreeData = null;
if (p1TreeDataList !=null && !p1TreeDataList.isEmpty()) {
p1TreeData = p1TreeDataList.get(0);
p1TreeData.setModel(pName);
p1TreeData.setModelLevel(1);
p1TreeData.setModelPid(rootId);
p1TreeData.setModelType(modelType);
p1TreeData.setName(pName);
p1TreeData.setPid(rootPID);
p1TreeData.setDelFlag("1");
p1TreeData.setHasChildren("1");
this.baseMapper.updateById(p1TreeData);
}else{
p1TreeData = new SarModelTree();
p1TreeData.setId(UUIDUtils.randomUUID(20));
p1TreeData.setModel(pName);
p1TreeData.setModelLevel(1);
p1TreeData.setModelPid(rootId);
p1TreeData.setModelType(modelType);
p1TreeData.setName(pName);
p1TreeData.setPid(rootPID);
p1TreeData.setDelFlag("1");
p1TreeData.setHasChildren("1");
this.baseMapper.insert(p1TreeData);
}
if(StringUtils.isNotBlank(p2Name)){
QueryWrapper<SarModelTree> queryP2Wrapper = new QueryWrapper<>();
queryP2Wrapper.eq("NAME",pName);
queryP2Wrapper.eq("MODEL_TYPE",modelType);
queryP2Wrapper.eq("MODEL_LEVEL",1);
queryP2Wrapper.eq("MODEL_PID",rootId);
queryP2Wrapper.eq("DEL_FLAG","1");
List<SarModelTree> p2TreeDataList = this.baseMapper.selectList(queryP2Wrapper);
SarModelTree p2TreeData = null;
if (p2TreeDataList !=null && !p2TreeDataList.isEmpty()) {
p2TreeData = p2TreeDataList.get(0);
p2TreeData.setModel(p3Name);
p2TreeData.setModelLevel(2);
p2TreeData.setModelPid(p1TreeData.getId());
p2TreeData.setModelType(modelType);
p2TreeData.setName(p2Name);
p2TreeData.setPid(p1TreeData.getName());
p2TreeData.setDelFlag("1");
p2TreeData.setHasChildren("1");
this.baseMapper.updateById(p2TreeData);
}else{
p2TreeData = new SarModelTree();
p2TreeData.setId(UUIDUtils.randomUUID(20));
p2TreeData.setModel(p3Name);
p2TreeData.setModelLevel(2);
p2TreeData.setModelPid(p1TreeData.getId());
p2TreeData.setModelType(modelType);
p2TreeData.setName(p2Name);
p2TreeData.setPid(p1TreeData.getName());
p2TreeData.setDelFlag("1");
p2TreeData.setHasChildren("1");
this.baseMapper.insert(p2TreeData);
}
if(StringUtils.isNotBlank(p3Name)){
QueryWrapper<SarModelTree> queryP3Wrapper = new QueryWrapper<>();
queryP3Wrapper.eq("NAME",pName);
queryP3Wrapper.eq("MODEL_TYPE",modelType);
queryP3Wrapper.eq("MODEL_LEVEL",1);
queryP3Wrapper.eq("MODEL_PID",rootId);
queryP3Wrapper.eq("DEL_FLAG","1");
List<SarModelTree> p3TreeDataList = this.baseMapper.selectList(queryP3Wrapper);
SarModelTree p3TreeData = null;
if (p3TreeDataList !=null && !p3TreeDataList.isEmpty()) {
p3TreeData = p3TreeDataList.get(0);
p3TreeData.setModel(p4Name);
p3TreeData.setModelLevel(3);
p3TreeData.setModelPid(p2TreeData.getId());
p3TreeData.setModelType(modelType);
p3TreeData.setName(p4Name);
p3TreeData.setPid(p2TreeData.getName());
p3TreeData.setDelFlag("1");
p3TreeData.setHasChildren("1");
this.baseMapper.updateById(p3TreeData);
}else{
p3TreeData = new SarModelTree();
p3TreeData.setId(UUIDUtils.randomUUID(20));
p3TreeData.setModel(p4Name);
p3TreeData.setModelLevel(3);
p3TreeData.setModelPid(p2TreeData.getId());
p3TreeData.setModelType(modelType);
p3TreeData.setName(p4Name);
p3TreeData.setPid(p2TreeData.getName());
p3TreeData.setDelFlag("1");
p3TreeData.setHasChildren("1");
this.baseMapper.insert(p3TreeData);
}
if(StringUtils.isNotBlank(p4Name)){
QueryWrapper<SarModelTree> queryP4Wrapper = new QueryWrapper<>();
queryP4Wrapper.eq("NAME",pName);
queryP4Wrapper.eq("MODEL_TYPE",modelType);
queryP4Wrapper.eq("MODEL_LEVEL",1);
queryP4Wrapper.eq("MODEL_PID",rootId);
queryP4Wrapper.eq("DEL_FLAG","1");
List<SarModelTree> p4TreeDataList = this.baseMapper.selectList(queryP4Wrapper);
SarModelTree p4TreeData = null;
if (p4TreeDataList !=null && !p4TreeDataList.isEmpty()) {
p4TreeData = p4TreeDataList.get(0);
p4TreeData.setModel(p5Name);
p4TreeData.setModelLevel(4);
p4TreeData.setModelPid(p3TreeData.getId());
p4TreeData.setModelType(modelType);
p4TreeData.setName(p5Name);
p4TreeData.setPid(p3TreeData.getName());
p4TreeData.setDelFlag("1");
p4TreeData.setHasChildren("1");
this.baseMapper.updateById(p4TreeData);
}else{
p4TreeData = new SarModelTree();
p4TreeData.setId(UUIDUtils.randomUUID(20));
p4TreeData.setModel(p5Name);
p4TreeData.setModelLevel(4);
p4TreeData.setModelPid(p3TreeData.getId());
p4TreeData.setModelType(modelType);
p4TreeData.setName(p5Name);
p4TreeData.setPid(p3TreeData.getName());
p4TreeData.setDelFlag("1");
p4TreeData.setHasChildren("1");
this.baseMapper.insert(p4TreeData);
}
if(StringUtils.isNotBlank(p5Name)){
QueryWrapper<SarModelTree> queryP5Wrapper = new QueryWrapper<>();
queryP5Wrapper.eq("NAME",pName);
queryP5Wrapper.eq("MODEL_TYPE",modelType);
queryP5Wrapper.eq("MODEL_LEVEL",1);
queryP5Wrapper.eq("MODEL_PID",rootId);
queryP5Wrapper.eq("DEL_FLAG","1");
List<SarModelTree> p5TreeDataList = this.baseMapper.selectList(queryP5Wrapper);
SarModelTree p5TreeData = null;
if (p5TreeDataList !=null && !p5TreeDataList.isEmpty()) {
p5TreeData = p5TreeDataList.get(0);
p5TreeData.setModel(p6Name);
p5TreeData.setModelLevel(5);
p5TreeData.setModelPid(p4TreeData.getId());
p5TreeData.setModelType(modelType);
p5TreeData.setName(p6Name);
p5TreeData.setPid(p4TreeData.getName());
p5TreeData.setFeatures(jgysName);
p5TreeData.setDelFlag("1");
p5TreeData.setHasChildren("1");
this.baseMapper.updateById(p5TreeData);
}else{
p5TreeData = new SarModelTree();
p5TreeData.setId(UUIDUtils.randomUUID(20));
p5TreeData.setModel(p6Name);
p5TreeData.setModelLevel(5);
p5TreeData.setModelPid(p4TreeData.getId());
p5TreeData.setModelType(modelType);
p5TreeData.setName(p6Name);
p5TreeData.setPid(p4TreeData.getName());
p5TreeData.setFeatures(jgysName);
p5TreeData.setDelFlag("1");
p5TreeData.setHasChildren("1");
this.baseMapper.insert(p5TreeData);
}
}
}
}
}
}
successCount.getAndIncrement();
});
head.setERRORCODE("0");
head.setRESULT("成功");
ResponseResult returnData = new ResponseResult();
returnData.setGUID("-1");
returnData.setMESSAGE("");
returnData.setSTATUS("S");
resultList.add(returnData);
ResponseDto dto = new ResponseDto(head,resultList);
return dto;
}catch (Exception ex){
logger.error(ex.getMessage(),ex);
head.setERRORCODE("2");
head.setRESULT("业务失败需要重做");
ResponseResult returnData = new ResponseResult();
returnData.setGUID("-1");
returnData.setMESSAGE("数据写入过程中发生错误,需重新推送");
returnData.setSTATUS("E");
resultList.add(returnData);
ResponseDto dto = new ResponseDto(head,resultList);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return dto;
}
}
}
@@ -128,7 +128,7 @@ public class SarModuleTreeServiceImpl extends ServiceImpl<SarModuleTreeDao, SarM
sarModuleTree.setGuid(UUIDUtils.randomUUID20());
moduleTreeList.add(sarModuleTree);
});
//此处
//进行全量覆盖即删除表中所有数据,之后插入新的数据
sarModuleTreeService.remove(null);
@@ -145,6 +145,9 @@ public class SarModuleTreeServiceImpl extends ServiceImpl<SarModuleTreeDao, SarM
return head;
}
/**
* 把SarModuleTree类型的list集合转换为SarModelTree类型的list集合,这样就不用修改前端代码( •̀ ω •́ )✧
* --->对修改关闭,对扩展开放