提交 cf7b1990 authored 作者: mry's avatar mry

fix(web): 接口文档同步

上级 42400e44
......@@ -18,8 +18,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* @author mruny
......@@ -331,51 +332,36 @@ public class MouldDocServiceImpl extends ServiceImpl<MouldDocMapper, MouldDoc> i
int ignoreNum = 0;
StatusCode statusCode = new StatusCode();
statusCode.setSwaggerDataType(SwaggerDataType.MOULD_DOC);
if (mouldVos.size() != 0) {
if (!CollectionUtils.isEmpty(mouldVos)) {
List<MouldDoc> mouldDocs = getMouldDoc(mouldVos);
//当前项目中的所有数据模型
List<MouldDoc> mouldDocList = Optional.ofNullable(mouldDocMapper.selectList(Wrappers.lambdaQuery(MouldDoc.class)
//数据库中存在的当前项目中所有的数据模型
List<MouldDoc> pastMouldDocs = Optional.ofNullable(mouldDocMapper.selectList(Wrappers.lambdaQuery(MouldDoc.class)
.eq(MouldDoc::getProjectId, projectId))).orElse(new ArrayList<>());
//按照名称分组
Map<String, List<MouldDoc>> collect = mouldDocList.stream()
.filter(mouldDoc -> mouldDoc != null && mouldDoc.getObjName() != null && !"".equals(mouldDoc.getObjName()))
.collect(Collectors.groupingBy(MouldDoc::getObjName));
//存在的不同名称的数据模型(如果同名取第一个)
List<MouldDoc> list = new ArrayList<>();
//每组取第一个
if (!CollectionUtils.isEmpty(collect)) {
Set<String> objNames = collect.keySet();
if (!CollectionUtils.isEmpty(objNames)) {
for (String objName : objNames) {
MouldDoc mouldDoc = collect.get(objName).get(0);
list.add(mouldDoc);
}
}
}
//如果存在当前分组就直接使用,如果不存在就创建在使用
Long groupingId = getGroupingId(mouldId, projectId);
//存数据,并且将数据库中同名的数据模型修改未未同步
for (MouldDoc mouldDoc : mouldDocs) {
//将新的分组存入到数据中
mouldDoc.setMouldGroupingId(groupingId);
mouldDoc.setProjectId(projectId);
mouldDoc.setStatus(SyncStatus.INSERT);
Integer integer = Optional.of(mouldDocMapper.insert(mouldDoc)).orElseThrow(() -> new GlobalException("添加数据模型失败"));
saveNum = saveNum + integer;
//操作数据库中存在的数据模型
for (MouldDoc doc : list) {
//如果同名,就将库存中的同名数据模型修改为未同步
if (mouldDoc.getObjName().equals(doc.getObjName())) {
list.remove(doc);
doc.setStatus(SyncStatus.NO);
mouldDocMapper.updateById(doc);
break;
List<MouldDoc> mouldDocList = Optional.ofNullable(mouldDocMapper.selectList(Wrappers.lambdaQuery(MouldDoc.class)
.eq(MouldDoc::getProjectId, projectId)
.eq(MouldDoc::getObjName, mouldDoc.getObjName()))).orElse(new ArrayList<>());
if (!CollectionUtils.isEmpty(mouldDocList)) {
for (MouldDoc doc : mouldDocList) {
if (doc.toString().equals(mouldDoc.toString())) {
pastMouldDocs.remove(doc);
doc.setStatus(SyncStatus.UPDATE);
}
}
}
Integer integer = Optional.of(mouldDocMapper.insert(mouldDoc)).orElseThrow(() -> new GlobalException("添加失败"));
saveNum = saveNum + integer;
}
//剩下的就是当前存在,但是导入的数据中不存在的
if (list.size() != 0) {
for (MouldDoc mouldDoc : list) {
mouldDoc.setStatus(SyncStatus.NO);
mouldDocMapper.updateById(mouldDoc);
if (!CollectionUtils.isEmpty(pastMouldDocs)) {
for (MouldDoc pastMouldDoc : pastMouldDocs) {
pastMouldDoc.setStatus(SyncStatus.NO);
mouldDocMapper.updateById(pastMouldDoc);
}
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论