add ASMS同步数据逻辑
This commit is contained in:
+26
-12
@@ -3,6 +3,7 @@ package com.jero.modules.docking.asms.api.service.impl;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.modules.docking.asms.api.entity.LawsAsmsOpenApi;
|
||||
import com.jero.modules.docking.asms.api.mapper.LawsAsmsOpenApiMapper;
|
||||
@@ -12,6 +13,7 @@ import com.jero.modules.system.entity.SysDictItem;
|
||||
import com.jero.modules.system.service.ISysDictItemService;
|
||||
import com.spire.ms.System.Collections.ArrayList;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -22,6 +24,7 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
@@ -152,15 +155,17 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
|
||||
if ("1".equals(lawsAsmsOpenApi.getApiType())
|
||||
&& StringUtils.isNotBlank(lawsAsmsOpenApi.getDictId()) && !Objects.isNull(mapList)) {
|
||||
// 如果是下拉字典(普通)、字典id不为空、返回的数据不为空,则进行数据字典同步操作
|
||||
List<SysDictItem> dictItemList = new ArrayList();
|
||||
|
||||
// 删除该字典的全部数据项
|
||||
// 查询该字典全部数据项
|
||||
LambdaQueryWrapper<SysDictItem> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(SysDictItem::getDictId, lawsAsmsOpenApi.getDictId());
|
||||
sysDictItemService.remove(queryWrapper);
|
||||
log.info("删除”{}“的全部字典数据项...", lawsAsmsOpenApi.getApiName());
|
||||
|
||||
// 封装数据
|
||||
List<SysDictItem> dictItemList = sysDictItemService.list(queryWrapper);
|
||||
List<String> codeList;
|
||||
if (CollectionUtils.isNotEmpty(dictItemList)) {
|
||||
codeList = dictItemList.stream().map(SysDictItem::getItemValue).collect(Collectors.toList());
|
||||
} else {
|
||||
codeList = new ArrayList();
|
||||
}
|
||||
// 遍历返回数据,封装字典数据项
|
||||
for (int i = 0; i < mapList.size(); i++) {
|
||||
Map<String, String> eMap = mapList.get(i);
|
||||
SysDictItem dictItem = new SysDictItem();
|
||||
@@ -191,17 +196,26 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
|
||||
dictItem.setDescription(v);
|
||||
}
|
||||
});
|
||||
dictItemList.add(dictItem);
|
||||
if (StringUtils.isBlank(dictItem.getItemValue())) {
|
||||
throw new JeroBootException("字典值不能为空");
|
||||
}
|
||||
if (codeList.contains(dictItem.getItemValue())) {
|
||||
// 如果code在数据库存在,则将数据库的id赋予对接的数据
|
||||
dictItem.setId(dictItemList.stream().filter(e ->
|
||||
e.getItemValue().equals(dictItem.getItemValue()))
|
||||
.collect(Collectors.toList()).get(0).getId());
|
||||
sysDictItemService.updateById(dictItem);
|
||||
} else {
|
||||
// 如果不存在则新增
|
||||
sysDictItemService.save(dictItem);
|
||||
}
|
||||
}
|
||||
// 保存到数据库
|
||||
sysDictItemService.saveBatch(dictItemList);
|
||||
// 状态设置为已同步
|
||||
lawsAsmsOpenApi.setStatus("1");
|
||||
log.info("添加”{}“的字典数据项{}条数据...", lawsAsmsOpenApi.getApiName(), dictItemList.size());
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// 同步接口的状态
|
||||
updateBatchById(lawsAsmsOpenApiList);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user