From 8e1c685d8a74849347aecf39ccc6711c501f4413 Mon Sep 17 00:00:00 2001 From: yangsb Date: Tue, 26 Mar 2024 10:49:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=87=E7=AD=BE=E3=80=81?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E6=A8=A1=E6=9D=BF=E7=9A=84=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/service/ESDocumentServiceImpl.java | 5 +- .../LabelTemplateServiceImpl.java | 46 +++++++++++++++-- .../service/lable/LabelServiceImpl.java | 50 +++++++++++++++++-- 3 files changed, 91 insertions(+), 10 deletions(-) diff --git a/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentServiceImpl.java b/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentServiceImpl.java index 25ca4d658..35333fcbd 100644 --- a/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentServiceImpl.java +++ b/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentServiceImpl.java @@ -122,13 +122,16 @@ public class ESDocumentServiceImpl implements ESDocumentService{ public BulkResponse bulkCreate(String idxName, List documents) throws Exception { BulkRequest.Builder br = new BulkRequest.Builder(); LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + Date date = new Date(); documents.forEach(document ->{ ESDocument esDocument = (ESDocument) document; if(StrUtil.isBlank(esDocument.getId())) { esDocument.setId(snowflake.nextIdStr()); } + esDocument.setCreator(loginUser.getId()); + esDocument.setCreateTime(date); esDocument.setUpdater(loginUser.getId()); - esDocument.setUpdateTime(new Date()); + esDocument.setUpdateTime(date); br.operations(op -> op.index(idx -> idx .index(idxName) .id(esDocument.getId().toString()) diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/labeltemplate/LabelTemplateServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/labeltemplate/LabelTemplateServiceImpl.java index dfc8f805a..326e68269 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/labeltemplate/LabelTemplateServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/labeltemplate/LabelTemplateServiceImpl.java @@ -96,11 +96,49 @@ public class LabelTemplateServiceImpl implements LabelTemplateService { LabelTemplateDO updateObj = BeanUtils.toBean(updateReqVO, LabelTemplateDO.class); labelTemplateMapper.updateById(updateObj); - // 更新子表 - List elements = updateReqVO.getElements(); + List labelElementTemplateDOS = labelElementTemplateMapper.selectList(new LambdaQueryWrapperX() + .select(LabelElementTemplateDO::getId) + .eq(LabelElementTemplateDO::getLabelTemplateId, updateReqVO.getId())); + //删除旧的元素 + DeleteByQueryRequest.Builder builder = null; + if(CollectionUtil.isNotEmpty(labelElementTemplateDOS)) { + List templateIds = labelElementTemplateDOS.stream() + .map(LabelElementTemplateDO::getId) + .toList(); + labelElementTemplateMapper.deleteBatchIds(templateIds); + List 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 createReqVOElements = updateReqVO.getElements(); + List 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>() { }, elements));*/ - labelElementTemplateMapper.updateBatch(Convert.convert(new TypeReference>() { + /* labelElementTemplateMapper.updateBatch(Convert.convert(new TypeReference>() { }, elements)); List labelElementPropertyDOS = elements.stream().map(e -> e.getPropertyDO()).collect(Collectors.toList()); try { @@ -108,7 +146,7 @@ public class LabelTemplateServiceImpl implements LabelTemplateService { } catch (Exception e) { log.error(e.getMessage()); throw exception(INTERNAL_SERVER_ERROR); - } + }*/ } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/lable/LabelServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/lable/LabelServiceImpl.java index 3888aa595..9cf417c56 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/lable/LabelServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/lable/LabelServiceImpl.java @@ -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.mybatis.core.query.LambdaQueryWrapperX; 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.labeltemplate.LabelElementTemplateDO; 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.machine.CuttingSettingDO; @@ -94,10 +96,48 @@ public class LabelServiceImpl implements LabelService { LabelDO updateObj = BeanUtils.toBean(updateReqVO, LabelDO.class); LabelMapper.updateById(updateObj); - // 更新子表 - List elements = updateReqVO.getElements(); - /*updateLabelElementList(updateReqVO.getId(), Convert.convert(new TypeReference>() { - }, elements));*/ + List labelElementDOS = labelElementMapper.selectList(new LambdaQueryWrapperX() + .select(LabelElementDO::getId) + .eq(LabelElementDO::getLabelId, updateReqVO.getId())); + //删除旧的元素 + DeleteByQueryRequest.Builder builder = null; + if(CollectionUtil.isNotEmpty(labelElementDOS)) { + List templateIds = labelElementDOS.stream() + .map(LabelElementDO::getId) + .toList(); + labelElementMapper.deleteBatchIds(templateIds); + List 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 createReqVOElements = updateReqVO.getElements(); + List 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 elements = updateReqVO.getElements(); + *//*updateLabelElementList(updateReqVO.getId(), Convert.convert(new TypeReference>() { + }, elements));*//* labelElementMapper.updateBatch(Convert.convert(new TypeReference>() { }, elements)); List labelElementPropertyDOS = elements.stream().map(e -> e.getPropertyDO()).collect(Collectors.toList()); @@ -106,7 +146,7 @@ public class LabelServiceImpl implements LabelService { } catch (Exception e) { log.error(e.getMessage()); throw exception(INTERNAL_SERVER_ERROR); - } + }*/ }