update 远程调用

This commit is contained in:
liao
2023-10-20 18:05:47 +08:00
parent 9c7dd6d297
commit cf5a67954a
2 changed files with 104 additions and 73 deletions
@@ -21,6 +21,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jero.common.exception.JeroBootException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -154,84 +155,88 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
if (StringUtils.isNotBlank(lawsAsmsOpenApi.getQueryParamJson())) {
map = (Map<String, String>) JSON.parse(lawsAsmsOpenApi.getQueryParamJson());
}
List<Map<String, String>> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), map);
if ("1".equals(lawsAsmsOpenApi.getApiType())
&& StringUtils.isNotBlank(lawsAsmsOpenApi.getDictId()) && CollectionUtils.isNotEmpty(mapList)) {
if ("1".equals(lawsAsmsOpenApi.getApiType()) && StringUtils.isNotBlank(lawsAsmsOpenApi.getDictId())) {
// 如果是下拉字典(普通)、字典id不为空、返回的数据不为空,则进行数据字典同步操作
// 查询该字典全部数据项
LambdaQueryWrapper<SysDictItem> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysDictItem::getDictId, lawsAsmsOpenApi.getDictId());
List<SysDictItem> dictItemList = sysDictItemService.list(queryWrapper);
List<String> codeList;
List<SysDictItem> insertDictItemList = new ArrayList();
List<SysDictItem> updateDictItemList = new ArrayList();
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();
// 字典id
dictItem.setDictId(lawsAsmsOpenApi.getDictId());
// 是否标签管理显示(显示)
dictItem.setIsTagDict(1);
// 状态(启用)
dictItem.setStatus(1);
dictItem.setDelFlag(0);
// 排序
dictItem.setSortOrder(i + 1);
eMap.forEach((k, v) -> {
if ("code".equals(k)) {
// 字典项值
dictItem.setItemValue(v);
} else if ("name".equals(k)) {
// 字典项名称
dictItem.setItemText(v);
} else if ("id".equals(k)) {
// 主键
dictItem.setId(v);
} else if ("pid".equals(k)) {
// 父节点id
dictItem.setParentId(v);
} else if ("source".equals(k)) {
// 来源
dictItem.setDescription(v);
}
});
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());
updateDictItemList.add(dictItem);
List<Map<String, String>> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), map);
if (CollectionUtils.isNotEmpty(mapList)) {
LambdaQueryWrapper<SysDictItem> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysDictItem::getDictId, lawsAsmsOpenApi.getDictId());
List<SysDictItem> dictItemList = sysDictItemService.list(queryWrapper);
List<String> codeList;
List<SysDictItem> insertDictItemList = new ArrayList();
List<SysDictItem> updateDictItemList = new ArrayList();
if (CollectionUtils.isNotEmpty(dictItemList)) {
codeList = dictItemList.stream().map(SysDictItem::getItemValue).collect(Collectors.toList());
} else {
// 如果不存在则新增
insertDictItemList.add(dictItem);
codeList = new ArrayList();
}
// 遍历返回数据,封装字典数据项
for (int i = 0; i < mapList.size(); i++) {
Map<String, String> eMap = mapList.get(i);
SysDictItem dictItem = new SysDictItem();
// 字典id
dictItem.setDictId(lawsAsmsOpenApi.getDictId());
// 是否标签管理显示(显示)
dictItem.setIsTagDict(1);
// 状态(启用)
dictItem.setStatus(1);
dictItem.setDelFlag(0);
// 排序
dictItem.setSortOrder(i + 1);
eMap.forEach((k, v) -> {
if ("code".equals(k)) {
// 字典项值
dictItem.setItemValue(v);
} else if ("name".equals(k)) {
// 字典项名称
dictItem.setItemText(v);
} else if ("id".equals(k)) {
// 主键
dictItem.setId(v);
} else if ("pid".equals(k)) {
// 父节点id
dictItem.setParentId(v);
} else if ("source".equals(k)) {
// 来源
dictItem.setDescription(v);
}
});
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());
updateDictItemList.add(dictItem);
} else {
// 如果不存在则新增
insertDictItemList.add(dictItem);
}
}
// 操作数据库
if (CollectionUtils.isNotEmpty(updateDictItemList)) {
// 更新
sysDictItemService.updateBatchById(updateDictItemList);
}
if (CollectionUtils.isNotEmpty(insertDictItemList)) {
// 新增
sysDictItemService.saveBatch(insertDictItemList);
}
// 状态设置为已同步
lawsAsmsOpenApi.setStatus("1");
}
// 操作数据库
if (CollectionUtils.isNotEmpty(updateDictItemList)) {
// 更新
sysDictItemService.updateBatchById(updateDictItemList);
}
if (CollectionUtils.isNotEmpty(insertDictItemList)) {
// 新增
sysDictItemService.saveBatch(insertDictItemList);
}
// 状态设置为已同步
lawsAsmsOpenApi.setStatus("1");
} else if ("2".equals(lawsAsmsOpenApi.getApiType()) && !Objects.isNull(mapList)) {
log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), mapList.size());
} else if ("2".equals(lawsAsmsOpenApi.getApiType())) {
// 如果是分标委
} else if ("3".equals(lawsAsmsOpenApi.getApiType())
&& "xiaobodata/openApi/domesticLaws/list".equals(lawsAsmsOpenApi.getApiUrl())) {
List<Map<String, String>> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), map);
} else if ("3".equals(lawsAsmsOpenApi.getApiType()) && "xiaobodata/openApi/domesticLaws/list".equals(lawsAsmsOpenApi.getApiUrl())) {
// 如果是国内法规,并且url为国内法规标准检索列表
List<Map<String, String>> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), map);
Integer pageNo;
Integer pageSize;
if (CollectionUtils.isNotEmpty(mapList)) {
@@ -243,6 +248,7 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
lawsAsmsDomestic.setId(lawsAsmsDomestic.getCode());
lawsAsmsDomestic.setCreateTimeString(eMap.get("createTime"));
lawsAsmsDomestic.setUpdateTimeString(eMap.get("updateTime"));
lawsAsmsDomestic.setFocalPointName(eMap.get("focalPoint"));
lawsAsmsDomestic.setSyncFlag("A");
lawsAsmsDomesticList.add(lawsAsmsDomestic);
});
@@ -256,9 +262,34 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
map.put("pageNo", pageNo.toString());
String jsonString = JSON.toJSONString(map);
lawsAsmsOpenApi.setQueryParamJson(jsonString);
}
log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), mapList.size());
log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), mapList.size());
} else if ("3".equals(lawsAsmsOpenApi.getApiType()) && "xiaobodata/openApi/domesticLaws/getInfo".equals(lawsAsmsOpenApi.getApiUrl())) {
// 如果是国内法规,并且url为国内法规标准基本信息
LambdaQueryWrapper<LawsAsmsDomestic> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(LawsAsmsDomestic::getCode);
queryWrapper.eq(LawsAsmsDomestic::getSyncFlag, "A");
List<LawsAsmsDomestic> lawsAsmsDomesticList = lawsAsmsDomesticService.list(queryWrapper);
if (CollectionUtils.isEmpty(lawsAsmsDomesticList)) {
lawsAsmsOpenApi.setStatus("1");
}
List<LawsAsmsDomestic> updateList = new ArrayList();
if (CollectionUtils.isNotEmpty(lawsAsmsDomesticList)) {
Map<String, String> paramMap = new HashMap<>();
lawsAsmsDomesticList.forEach(lawsAsmsDomestic -> {
String code = lawsAsmsDomestic.getCode();
paramMap.put("lawCode", code);
List<Map<String, String>> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), paramMap);
LawsAsmsDomestic parseObject = JSONObject.parseObject(JSONObject.toJSONString(mapList.get(0)), LawsAsmsDomestic.class);
log.info(parseObject.toString());
parseObject.setSyncFlag("B");
parseObject.setId(code);
updateList.add(parseObject);
});
lawsAsmsDomesticService.updateBatchById(updateList);
log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), lawsAsmsDomesticList.size());
}
}
});
// 同步接口的状态
updateBatchById(lawsAsmsOpenApiList);