修改标签、标签模板的更新接口逻辑

This commit is contained in:
yangsb
2024-03-26 10:49:16 +08:00
parent f99d5ea714
commit 8e1c685d8a
3 changed files with 91 additions and 10 deletions
@@ -122,13 +122,16 @@ public class ESDocumentServiceImpl implements ESDocumentService{
public <T> BulkResponse bulkCreate(String idxName, List<T> documents) throws Exception { public <T> BulkResponse bulkCreate(String idxName, List<T> documents) throws Exception {
BulkRequest.Builder br = new BulkRequest.Builder(); BulkRequest.Builder br = new BulkRequest.Builder();
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
Date date = new Date();
documents.forEach(document ->{ documents.forEach(document ->{
ESDocument esDocument = (ESDocument) document; ESDocument esDocument = (ESDocument) document;
if(StrUtil.isBlank(esDocument.getId())) { if(StrUtil.isBlank(esDocument.getId())) {
esDocument.setId(snowflake.nextIdStr()); esDocument.setId(snowflake.nextIdStr());
} }
esDocument.setCreator(loginUser.getId());
esDocument.setCreateTime(date);
esDocument.setUpdater(loginUser.getId()); esDocument.setUpdater(loginUser.getId());
esDocument.setUpdateTime(new Date()); esDocument.setUpdateTime(date);
br.operations(op -> op.index(idx -> idx br.operations(op -> op.index(idx -> idx
.index(idxName) .index(idxName)
.id(esDocument.getId().toString()) .id(esDocument.getId().toString())
@@ -96,11 +96,49 @@ public class LabelTemplateServiceImpl implements LabelTemplateService {
LabelTemplateDO updateObj = BeanUtils.toBean(updateReqVO, LabelTemplateDO.class); LabelTemplateDO updateObj = BeanUtils.toBean(updateReqVO, LabelTemplateDO.class);
labelTemplateMapper.updateById(updateObj); labelTemplateMapper.updateById(updateObj);
// 更新子表 List<LabelElementTemplateDO> labelElementTemplateDOS = labelElementTemplateMapper.selectList(new LambdaQueryWrapperX<LabelElementTemplateDO>()
List<LabelElementTemplateSaveReqVO> elements = updateReqVO.getElements(); .select(LabelElementTemplateDO::getId)
.eq(LabelElementTemplateDO::getLabelTemplateId, updateReqVO.getId()));
//删除旧的元素
DeleteByQueryRequest.Builder builder = null;
if(CollectionUtil.isNotEmpty(labelElementTemplateDOS)) {
List<Long> templateIds = labelElementTemplateDOS.stream()
.map(LabelElementTemplateDO::getId)
.toList();
labelElementTemplateMapper.deleteBatchIds(templateIds);
List<FieldValue> fieldValues = templateIds.stream().map(FieldValue::of).collect(Collectors.toList());
builder = new DeleteByQueryRequest.Builder()
.index(LABEL_TEMPLATE_ELEMENT_PROPERTY_INX)
.query(TermsQuery.of(e -> e.field("elementId").terms(b -> b.value(fieldValues)))._toQuery());
}
//新增新的元素
List<LabelElementTemplateSaveReqVO> createReqVOElements = updateReqVO.getElements();
List<LabelElementPropertyDO> labelElementPropertyDOS = new ArrayList<>();
createReqVOElements.forEach(e -> {
e.setLabelTemplateId(updateObj.getId());
LabelElementTemplateDO elementTemplateDO = Convert.convert(LabelElementTemplateDO.class, e);
labelElementTemplateMapper.insert(elementTemplateDO);
LabelElementPropertyDO propertyDO = e.getPropertyDO();
propertyDO.setElementId(elementTemplateDO.getId());
labelElementPropertyDOS.add(propertyDO);
});
//插入索引
try {
esDocumentService.bulkCreate(LABEL_TEMPLATE_ELEMENT_PROPERTY_INX, labelElementPropertyDOS);
if(!Objects.isNull(builder)) {
elasticsearchClient.deleteByQuery(builder.build());
}
} catch (Exception e) {
log.error(e.getMessage());
throw exception(INTERNAL_SERVER_ERROR);
}
/*updateLabelElementTemplateList(updateReqVO.getId(), Convert.convert(new TypeReference<List<LabelElementTemplateDO>>() { /*updateLabelElementTemplateList(updateReqVO.getId(), Convert.convert(new TypeReference<List<LabelElementTemplateDO>>() {
}, elements));*/ }, elements));*/
labelElementTemplateMapper.updateBatch(Convert.convert(new TypeReference<List<LabelElementTemplateDO>>() { /* labelElementTemplateMapper.updateBatch(Convert.convert(new TypeReference<List<LabelElementTemplateDO>>() {
}, elements)); }, elements));
List<LabelElementPropertyDO> labelElementPropertyDOS = elements.stream().map(e -> e.getPropertyDO()).collect(Collectors.toList()); List<LabelElementPropertyDO> labelElementPropertyDOS = elements.stream().map(e -> e.getPropertyDO()).collect(Collectors.toList());
try { try {
@@ -108,7 +146,7 @@ public class LabelTemplateServiceImpl implements LabelTemplateService {
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage()); log.error(e.getMessage());
throw exception(INTERNAL_SERVER_ERROR); throw exception(INTERNAL_SERVER_ERROR);
} }*/
} }
@@ -15,7 +15,9 @@ import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.es.core.service.ESDocumentService; import com.cf.imes.framework.es.core.service.ESDocumentService;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.system.controller.admin.label.vo.*; import com.cf.imes.module.system.controller.admin.label.vo.*;
import com.cf.imes.module.system.controller.admin.labeltemplate.vo.LabelElementTemplateSaveReqVO;
import com.cf.imes.module.system.dal.dataobject.labelelementproperty.LabelElementPropertyDO; import com.cf.imes.module.system.dal.dataobject.labelelementproperty.LabelElementPropertyDO;
import com.cf.imes.module.system.dal.dataobject.labeltemplate.LabelElementTemplateDO;
import com.cf.imes.module.system.dal.dataobject.lable.LabelDO; import com.cf.imes.module.system.dal.dataobject.lable.LabelDO;
import com.cf.imes.module.system.dal.dataobject.lable.LabelElementDO; import com.cf.imes.module.system.dal.dataobject.lable.LabelElementDO;
import com.cf.imes.module.system.dal.dataobject.machine.CuttingSettingDO; import com.cf.imes.module.system.dal.dataobject.machine.CuttingSettingDO;
@@ -94,10 +96,48 @@ public class LabelServiceImpl implements LabelService {
LabelDO updateObj = BeanUtils.toBean(updateReqVO, LabelDO.class); LabelDO updateObj = BeanUtils.toBean(updateReqVO, LabelDO.class);
LabelMapper.updateById(updateObj); LabelMapper.updateById(updateObj);
// 更新子表 List<LabelElementDO> labelElementDOS = labelElementMapper.selectList(new LambdaQueryWrapperX<LabelElementDO>()
List<LabelElementSaveReqVO> elements = updateReqVO.getElements(); .select(LabelElementDO::getId)
/*updateLabelElementList(updateReqVO.getId(), Convert.convert(new TypeReference<List<LabelElementDO>>() { .eq(LabelElementDO::getLabelId, updateReqVO.getId()));
}, elements));*/ //删除旧的元素
DeleteByQueryRequest.Builder builder = null;
if(CollectionUtil.isNotEmpty(labelElementDOS)) {
List<Long> templateIds = labelElementDOS.stream()
.map(LabelElementDO::getId)
.toList();
labelElementMapper.deleteBatchIds(templateIds);
List<FieldValue> fieldValues = templateIds.stream().map(FieldValue::of).collect(Collectors.toList());
builder = new DeleteByQueryRequest.Builder()
.index(LABEL_ELEMENT_PROPERTY_INX)
.query(TermsQuery.of(e -> e.field("elementId").terms(b -> b.value(fieldValues)))._toQuery());
}
//新增新的元素
List<LabelElementSaveReqVO> createReqVOElements = updateReqVO.getElements();
List<LabelElementPropertyDO> labelElementPropertyDOS = new ArrayList<>();
createReqVOElements.forEach(e -> {
e.setLabelId(updateObj.getId());
LabelElementDO labelElementDO = Convert.convert(LabelElementDO.class, e);
labelElementMapper.insert(labelElementDO);
LabelElementPropertyDO propertyDO = e.getPropertyDO();
propertyDO.setElementId(labelElementDO.getId());
labelElementPropertyDOS.add(propertyDO);
});
//插入索引
try {
esDocumentService.bulkCreate(LABEL_ELEMENT_PROPERTY_INX, labelElementPropertyDOS);
if(!Objects.isNull(builder)) {
elasticsearchClient.deleteByQuery(builder.build());
}
} catch (Exception e) {
log.error(e.getMessage());
throw exception(INTERNAL_SERVER_ERROR);
}
/* List<LabelElementSaveReqVO> elements = updateReqVO.getElements();
*//*updateLabelElementList(updateReqVO.getId(), Convert.convert(new TypeReference<List<LabelElementDO>>() {
}, elements));*//*
labelElementMapper.updateBatch(Convert.convert(new TypeReference<List<LabelElementDO>>() { labelElementMapper.updateBatch(Convert.convert(new TypeReference<List<LabelElementDO>>() {
}, elements)); }, elements));
List<LabelElementPropertyDO> labelElementPropertyDOS = elements.stream().map(e -> e.getPropertyDO()).collect(Collectors.toList()); List<LabelElementPropertyDO> labelElementPropertyDOS = elements.stream().map(e -> e.getPropertyDO()).collect(Collectors.toList());
@@ -106,7 +146,7 @@ public class LabelServiceImpl implements LabelService {
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage()); log.error(e.getMessage());
throw exception(INTERNAL_SERVER_ERROR); throw exception(INTERNAL_SERVER_ERROR);
} }*/
} }