fix: 重复数据去重及简易并发控制
This commit is contained in:
parent
d4e4c138be
commit
e25bda3fa2
@ -62,39 +62,40 @@ public class GuideTenantProcedureStatusServiceImpl extends ServiceImpl<GuideTena
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 将租户操作步骤数量与模板操作步骤数量进行对比,如果模板操作步骤数量大于租户操作步骤数量,则根据模板为租户初始化新步骤点
|
||||
if (templateList.size() > procedureStatusList.size()) {
|
||||
// 将该租户未初始化的步骤点进行初始化
|
||||
List<Long> procedureStatusIdList = procedureStatusList.stream().map(GuideTenantProcedureStatus::getProcedureId).collect(Collectors.toList());
|
||||
respList.addAll(templateList.stream()
|
||||
.filter(t -> !procedureStatusIdList.contains(t.getId()))
|
||||
.map(t -> {
|
||||
GuideTenantProcedureStatusCreateReq createReq = new GuideTenantProcedureStatusCreateReq();
|
||||
createReq.setWorkspaceId(req.getWorkspaceId());
|
||||
createReq.setCategoryCode(t.getCategoryCode());
|
||||
createReq.setProcedureId(t.getId());
|
||||
createReq.setProcedureName(t.getName());
|
||||
createReq.setStatus(GuideProcedureStatus.TODO);
|
||||
create(createReq);
|
||||
return BeanUtil.copyProperties(createReq, GuideTenantProcedureStatusListResp.class);
|
||||
})
|
||||
.collect(Collectors.toList()));
|
||||
} else if (templateList.size() < procedureStatusList.size()) {
|
||||
log.warn("操作步骤模板:{},租户&分类:{},租户操作步骤状态:{}", JSONUtil.toJsonStr(templateList), JSONUtil.toJsonStr(req), JSONUtil.toJsonStr(procedureStatusList));
|
||||
throw new ServiceException("数据异常,操作步骤不存在,请联系管理人员");
|
||||
// 将租户操作步骤数量与模板操作步骤数量进行对比,是否需要根据模板为租户初始化新步骤点
|
||||
// 将该租户未初始化的步骤点进行初始化
|
||||
List<Long> procedureStatusIdList = procedureStatusList.stream().map(GuideTenantProcedureStatus::getProcedureId).distinct().collect(Collectors.toList());
|
||||
List<GuideTenantProcedureStatusListResp> newInitProcedures = templateList.stream()
|
||||
.filter(t -> !procedureStatusIdList.contains(t.getId()))
|
||||
.map(t -> {
|
||||
GuideTenantProcedureStatusCreateReq createReq = new GuideTenantProcedureStatusCreateReq();
|
||||
createReq.setWorkspaceId(req.getWorkspaceId());
|
||||
createReq.setCategoryCode(t.getCategoryCode());
|
||||
createReq.setProcedureId(t.getId());
|
||||
createReq.setProcedureName(t.getName());
|
||||
createReq.setStatus(GuideProcedureStatus.TODO);
|
||||
create(createReq);
|
||||
return BeanUtil.copyProperties(createReq, GuideTenantProcedureStatusListResp.class);
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(newInitProcedures)) {
|
||||
respList.addAll(newInitProcedures);
|
||||
}
|
||||
|
||||
// 对租户操作步骤的权限码和跳转链接进行补充
|
||||
Map<Long, GuideProcedureTemplateResp> templateMap = templateList.stream().collect(Collectors.toMap(GuideProcedureTemplateResp::getId, Function.identity(), (v1, v2) -> v1));
|
||||
respList.forEach(r -> {
|
||||
GuideProcedureTemplateResp t = templateMap.get(r.getProcedureId());
|
||||
r.setDescription(t.getDescription());
|
||||
r.setIsMust(t.getIsMust());
|
||||
r.setAuthCode(t.getAuthCode());
|
||||
r.setJumpUrl(t.getJumpUrl());
|
||||
r.setJumpReport(t.getJumpReport());
|
||||
r.setSort(t.getSort());
|
||||
});
|
||||
respList.stream()
|
||||
.collect(Collectors.toMap(r -> r.getWorkspaceId() + "_" + r.getProcedureId(), Function.identity(), (v1, v2) -> v1))
|
||||
.values()
|
||||
.forEach(r -> {
|
||||
GuideProcedureTemplateResp t = templateMap.get(r.getProcedureId());
|
||||
r.setDescription(t.getDescription());
|
||||
r.setIsMust(t.getIsMust());
|
||||
r.setAuthCode(t.getAuthCode());
|
||||
r.setJumpUrl(t.getJumpUrl());
|
||||
r.setJumpReport(t.getJumpReport());
|
||||
r.setSort(t.getSort());
|
||||
});
|
||||
return respList;
|
||||
}
|
||||
|
||||
@ -132,7 +133,7 @@ public class GuideTenantProcedureStatusServiceImpl extends ServiceImpl<GuideTena
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long create(GuideTenantProcedureStatusCreateReq req) {
|
||||
public synchronized Long create(GuideTenantProcedureStatusCreateReq req) {
|
||||
// 若操作所属分类或操作名称为空,则从对应模板获取
|
||||
if (Objects.isNull(req.getCategoryCode()) || CharSequenceUtil.isBlank(req.getProcedureName())) {
|
||||
GuideProcedureTemplateResp byProcedureId = procedureTemplateService.getByProcedureId(req.getProcedureId());
|
||||
|
||||
Loading…
Reference in New Issue
Block a user