elasticsearch移除

This commit is contained in:
gaoqr
2026-06-17 16:10:58 +08:00
parent 3b41c42951
commit 7c224fe197
47 changed files with 1087 additions and 1910 deletions
@@ -48,17 +48,6 @@
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-redis</artifactId>
</dependency>
<dependency>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-elasticsearch</artifactId>
<exclusions>
<exclusion>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
</exclusion>
</exclusions>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>jakarta.json</groupId>
@@ -220,10 +209,6 @@
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-biz-organ</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-elasticsearch</artifactId>
</include>
<include>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-excel</artifactId>
@@ -1,15 +1,8 @@
package com.cf.imes.module.executor.api.plan;
import cn.hutool.core.collection.CollUtil;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.FieldValue;
import co.elastic.clients.elasticsearch.core.SearchRequest;
import co.elastic.clients.elasticsearch.core.SearchResponse;
import co.elastic.clients.elasticsearch.core.search.Hit;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.util.json.JsonUtils;
import com.cf.imes.module.executor.api.plan.vo.OrderGroupRespVO;
@@ -47,7 +40,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR;
import static com.cf.imes.framework.common.util.json.JsonUtils.toJsonString;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.executor.enums.EsIndexEnum.*;
@@ -91,9 +83,6 @@ public class OrderPlanApiImpl implements OrderPlanApi{
@Resource
private OrderPartsMapper orderPartsMapper;
@Resource
private ElasticsearchClient elasticsearchClient;
public static final String SEPARATE = "select";
@@ -465,67 +454,21 @@ public class OrderPlanApiImpl implements OrderPlanApi{
private List<OrderPartsRemark> buildOrderPartsByOrderId(List<Long> orderIds, String index, Integer size) {
List<FieldValue> fieldValues = orderIds.stream().map(FieldValue::of).toList();
SearchRequest.Builder builder = new SearchRequest.Builder();
builder.index(index);
builder.size(size);
builder.query(q -> q.terms(b -> b.field("orderId").terms(e -> e.value(fieldValues))));
try {
SearchResponse<OrderPartsRemark> search = elasticsearchClient.search(builder.build(), OrderPartsRemark.class);
List<Hit<OrderPartsRemark>> hits = search.hits().hits();
if (CollUtil.isNotEmpty(hits)) {
return hits.stream().map(Hit::source).toList();
}
return new ArrayList<>();
} catch (IOException e) {
log.error(e.getMessage());
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
return new ArrayList<>();
}
private List<OptimizeBoardModelDO> buildBoardByPlanId(Long planId, String index, Integer size) {
SearchRequest.Builder builder = new SearchRequest.Builder();
builder.index(index);
builder.size(size);
builder.query(q -> q.term(b -> b.field("planId").value(planId)));
try {
SearchResponse<OptimizeBoardModelDO> search = elasticsearchClient.search(builder.build(), OptimizeBoardModelDO.class);
List<Hit<OptimizeBoardModelDO>> hits = search.hits().hits();
if (CollUtil.isNotEmpty(hits)) {
return hits.stream().map(Hit::source).toList();
}
return new ArrayList<>();
} catch (IOException e) {
log.error(e.getMessage());
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
return new ArrayList<>();
}
private List<OrderModelDO> buildBoardByPlateIds(Collection<Long> plateIds, String index, Integer size) {
List<FieldValue> fieldValues = plateIds.stream().map(FieldValue::of).toList();
SearchRequest.Builder builder = new SearchRequest.Builder();
builder.index(index);
builder.size(size);
builder.query(q -> q.terms(b -> b.field("plateId").terms(e -> e.value(fieldValues))));
try {
SearchResponse<OrderModelDO> search = elasticsearchClient.search(builder.build(), OrderModelDO.class);
List<Hit<OrderModelDO>> hits = search.hits().hits();
if (CollUtil.isNotEmpty(hits)) {
return hits.stream().map(Hit::source).toList();
}
return new ArrayList<>();
} catch (IOException e) {
log.error(e.getMessage());
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
return new ArrayList<>();
}
@@ -23,7 +23,6 @@ import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
import com.cf.imes.module.executor.enums.CategoryEnum;
import com.cf.imes.module.executor.enums.OrderDeletedEnum;
import com.cf.imes.module.executor.enums.OrderStatusEnum;
import com.cf.imes.module.executor.service.order.OrderInputProcessor;
import com.cf.imes.module.executor.service.order.OrderService;
import com.cf.imes.module.executor.util.ExcelWriterUtil;
import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataAchieve;
@@ -106,9 +105,6 @@ public class OrderController {
@Resource
private RedisLockUtil redisLockUtil;
@Resource
private OrderInputProcessor orderInputProcessor;
@Resource
private ChenfengCacheProperties chenfengCacheProperties;
@@ -246,12 +242,6 @@ public class OrderController {
return success(String.valueOf(id));
} catch (CompletionException | ExecutionException | InterruptedException e) {
// 进行判断,为空,写入时出现了错误,数据库数据回滚,此时删除 ES 里的数据
OrderDO orderDO = orderMapper.selectById(orderId);
if (orderDO == null) {
orderInputProcessor.deleteByOrderId(orderId, ORDER_PLATE_MODEL.getIndex());
orderInputProcessor.deleteByOrderId(orderId, ORDER_PARTS_REMARK_MODEL.getIndex());
}
Throwable cause = e.getCause();
return error((ServiceException) cause);
@@ -397,13 +387,6 @@ public class OrderController {
XMLUtil.writeErr(response, xmlStr, " order_add_xml_err.xml");
}
// 进行判断,为空,写入时出现了错误,数据库数据回滚,此时删除 ES 里的数据
if (ObjectUtil.isNotNull(orderDO) && ObjectUtil.isNotNull(orderMapper.selectById(orderDO.getId()))) {
Long deleteOrderId = orderDO.getId();
orderInputProcessor.deleteByOrderId(deleteOrderId, ORDER_PLATE_MODEL.getIndex());
orderInputProcessor.deleteByOrderId(deleteOrderId, ORDER_PARTS_REMARK_MODEL.getIndex());
}
} finally {
// 导入锁解锁
redisLockUtil.releaseLock(importLockKey, importLockValue);
@@ -1,6 +1,5 @@
package com.cf.imes.module.executor.controller.admin.orderParts.vo;
import com.cf.imes.framework.es.core.dal.ESDocument;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -12,7 +11,7 @@ import lombok.NoArgsConstructor;
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class OrderPartsRemark extends ESDocument {
public class OrderPartsRemark {
@Schema(description = "配件 ID")
private Long partsId;
@@ -4,8 +4,6 @@ import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.es.core.valid.CreateGroup;
import com.cf.imes.framework.es.core.valid.UpdateGroup;
import com.cf.imes.framework.excel.core.util.ExcelUtils;
import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO;
@@ -44,7 +42,7 @@ public class PlanController {
@PostMapping("/create")
@Operation(summary = "创建排单")
// @PreAuthorize("@ss.hasPermission('manage:un-order-olan:create')")
public CommonResult<Boolean> createPlan(@Validated(CreateGroup.class) @RequestBody PlanSaveReqVO createReqVO) {
public CommonResult<Boolean> createPlan(@RequestBody PlanSaveReqVO createReqVO) {
planService.createPlan(createReqVO);
return success(Boolean.TRUE);
}
@@ -52,7 +50,7 @@ public class PlanController {
@PutMapping("/update")
@Operation(summary = "更新排单")
@PreAuthorize("@ss.hasAnyPermissions('placeorder:update','manage:order-plan:insert-plate','manage:order-plan:remove-plate')")
public CommonResult<Boolean> updatePlan(@Validated(UpdateGroup.class) @RequestBody PlanSaveReqVO updateReqVO) {
public CommonResult<Boolean> updatePlan(@RequestBody PlanSaveReqVO updateReqVO) {
planService.updatePlan(updateReqVO);
return success(true);
}
@@ -1,7 +1,6 @@
package com.cf.imes.module.executor.controller.admin.plan.saveOptimize;
import com.cf.imes.framework.es.core.dal.ESDocument;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -16,7 +15,7 @@ import lombok.NoArgsConstructor;
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ProcessSchemeModelDO extends ESDocument {
public class ProcessSchemeModelDO {
@Schema(description = "排单ID")
@@ -1,7 +1,5 @@
package com.cf.imes.module.executor.controller.admin.plan.saveOptimize;
import com.cf.imes.framework.es.core.dal.ESDocument;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -16,7 +14,7 @@ import lombok.NoArgsConstructor;
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SaveProcessSchemeModelDO extends ESDocument {
public class SaveProcessSchemeModelDO {
@Schema(description = "排单ID", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -1,8 +1,5 @@
package com.cf.imes.module.executor.controller.admin.plan.vo;
import com.cf.imes.framework.es.core.valid.CreateGroup;
import com.cf.imes.framework.es.core.valid.UpdateGroup;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -30,15 +27,15 @@ public class BranchingPlanSaveReqVO {
public static class Item {
@Schema(description = "订单的商品id")
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败",groups = {UpdateGroup.class, CreateGroup.class})
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败")
private Long id;
@Schema(description = "订单id")
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败",groups = {UpdateGroup.class, CreateGroup.class})
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败")
private Long orderId;
@Schema(description = "板材库大板id")
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败",groups = {UpdateGroup.class, CreateGroup.class})
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败")
private String goodsId;
@Schema(description = "余料板ID")
@@ -1,7 +1,5 @@
package com.cf.imes.module.executor.controller.admin.plan.vo;
import com.cf.imes.framework.es.core.valid.CreateGroup;
import com.cf.imes.framework.es.core.valid.UpdateGroup;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -41,15 +39,15 @@ public class SavePlanPlateList {
public static class PlateItemList {
@Schema(description = "订单id")
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败",groups = {UpdateGroup.class, CreateGroup.class})
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败")
private Long plateId;
@Schema(description = "订单的商品id")
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败",groups = {UpdateGroup.class, CreateGroup.class})
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败")
private Long id;
@Schema(description = "订单id")
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败",groups = {UpdateGroup.class, CreateGroup.class})
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败")
private Long orderId;
@@ -61,12 +59,12 @@ public class SavePlanPlateList {
@Schema(description = "订单的商品id")
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败",groups = {UpdateGroup.class, CreateGroup.class})
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败")
private Long id;
@Schema(description = "板材库大板id-这个在新版还是需要的")
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败",groups = {UpdateGroup.class, CreateGroup.class})
@NotNull(message = "订单数据错误,请检查订单数据或重新导入,排单创建失败")
private String goodsId;
@@ -1,7 +1,6 @@
package com.cf.imes.module.executor.dal.dataobject.goods;
import com.cf.imes.framework.es.core.dal.ESDocument;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.ActualGoodsList;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.RemainBoardList;
import com.fasterxml.jackson.annotation.JsonFormat;
@@ -21,7 +20,7 @@ import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Schema(description = "优化后的大板信息")
public class OptimizeBoardModelDO extends ESDocument {
public class OptimizeBoardModelDO {
@Schema(description = "排单ID")
private Long planId;
@@ -1,7 +1,5 @@
package com.cf.imes.module.executor.dal.dataobject.goods;
import com.cf.imes.framework.es.core.dal.ESDocument;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -15,7 +13,7 @@ import java.math.BigDecimal;
@AllArgsConstructor
@NoArgsConstructor
@Schema(description = "混单选择的实际的大板信息")
public class PlanActualGoodsModelDO extends ESDocument {
public class PlanActualGoodsModelDO {
@Schema(description = "排单ID")
@@ -1,7 +1,5 @@
package com.cf.imes.module.executor.dal.dataobject.ordermodel;
import com.cf.imes.framework.es.core.dal.ESDocument;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -16,7 +14,7 @@ import lombok.NoArgsConstructor;
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class OrderModelCompressDO extends ESDocument {
public class OrderModelCompressDO {
@Schema(description = "订单id")
private Long orderId;
@@ -1,7 +1,6 @@
package com.cf.imes.module.executor.dal.dataobject.ordermodel;
import com.alibaba.fastjson.JSONObject;
import com.cf.imes.framework.es.core.dal.ESDocument;
import com.cf.imes.module.executor.util.deviseData.structure.*;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -23,7 +22,7 @@ import java.util.Map;
@AllArgsConstructor
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class OrderModelDO extends ESDocument {
public class OrderModelDO {
@Schema(description = "订单id")
private Long orderId;
@@ -1,7 +1,5 @@
package com.cf.imes.module.executor.dal.dataobject.ordermodel;
import com.cf.imes.framework.es.core.dal.ESDocument;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -15,7 +13,7 @@ import lombok.NoArgsConstructor;
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class OrderPlateModel extends ESDocument {
public class OrderPlateModel {
@Schema(description = "订单id")
private Long orderId;
@@ -4,22 +4,6 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.PageUtil;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.ElasticsearchException;
import co.elastic.clients.elasticsearch._types.FieldValue;
import co.elastic.clients.elasticsearch._types.SortOrder;
import co.elastic.clients.elasticsearch._types.aggregations.Aggregate;
import co.elastic.clients.elasticsearch.core.CountRequest;
import co.elastic.clients.elasticsearch.core.CountResponse;
import co.elastic.clients.elasticsearch.core.SearchRequest;
import co.elastic.clients.elasticsearch.core.SearchResponse;
import co.elastic.clients.elasticsearch.core.UpdateByQueryRequest;
import co.elastic.clients.elasticsearch.core.search.Hit;
import co.elastic.clients.elasticsearch.sql.TranslateRequest;
import co.elastic.clients.elasticsearch.sql.TranslateResponse;
import co.elastic.clients.json.JsonData;
import co.elastic.clients.json.JsonpMappingException;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
@@ -36,9 +20,7 @@ import com.cf.imes.framework.common.enums.PlanTypeEnum;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.Assert.AssertUtils;
import com.cf.imes.framework.common.util.json.JsonUtils;
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.LambdaUpdateWrapperX;
import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds;
@@ -64,19 +46,14 @@ import com.cf.imes.module.executor.dal.dataobject.remainplaten.RemainPlateDO;
import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper;
import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
import com.cf.imes.module.executor.dal.mysql.planitem.PlanItemMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateGoodMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.executor.dal.mysql.remainplaten.RemainPlateMapper;
import com.cf.imes.module.executor.enums.ErrorCodeConstants;
import com.cf.imes.module.executor.enums.plan.FlowProcessStatus;
import com.cf.imes.module.executor.service.plan.PlanService;
import com.cf.imes.module.executor.util.elasticsearch.EsUtils;
import com.cf.imes.module.system.api.dataSource.DataSourceApi;
import com.cf.imes.module.system.api.machine.MachineApi;
import com.cf.imes.module.system.api.permission.PermissionApi;
import com.cf.imes.module.system.api.systemconfig.SystemConfigApi;
import com.cf.imes.module.system.api.systemconfig.dto.ProcessSchemeDTO;
import com.fasterxml.jackson.databind.JsonNode;
@@ -96,7 +73,6 @@ import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.DATA_DATA_ERROR;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.ES_DATA_ERROR;
import static com.cf.imes.framework.common.util.json.JsonUtils.*;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
@@ -129,30 +105,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
@Resource
private OrderMapper orderMapper;
@Resource
private ElasticsearchClient elasticsearchClient;
@Resource
private MachineApi machineApi;
@Resource
private SystemConfigApi systemConfigApi;
@Resource
private PermissionApi permissionApi;
@Resource
private EsUtils esUtils;
@Resource
private ESDocumentService esDocumentService;
@Resource
private OrderPartsMapper orderPartsMapper;
@Resource
private OrderGroupMapper orderGroupMapper;
@@ -236,7 +191,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// 查询优化信息
List<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,planConfigId, planId, ORDER_OPTIMIZE_PLATE_MODEL.getIndex(), OptimizeBoardModelDO.class);
List<OptimizeBoardModelDO> optimizeBoardModelDOS = new ArrayList<>();
AssertUtils.notEmpty(optimizeBoardModelDOS,ORDER_PLAN_OPTIMIZE_ERROR);
@@ -478,7 +433,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// 兼容数据,后期可删除
List<OptimizeBoardModelDO> document = esUtils.getEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL.getIndex(), OptimizeBoardModelDO.class);
List<OptimizeBoardModelDO> document = new ArrayList<>();
if(CollUtil.isNotEmpty(document)){
OptimizeBoardModelDO optimizeBoardModelDO = document.get(0);
processId = optimizeBoardModelDO.getProcessId();
@@ -502,10 +457,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// 保存排单对应的方案组的配置信息
getPlanProcessSchemeConfig(planDO.getProcessId(),planId);
esUtils.deleteEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL.getIndex());
}else {
esUtils.deleteEsDocument(FIELD_PLAN_ID, FIELD_PLAN_CONFIG_ID, planId, boardModelDO.getPlanConfigId(), ORDER_OPTIMIZE_PLATE_MODEL.getIndex());
}
@@ -517,23 +471,12 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
if(req.getPlanConfigId() != null && req.getProcessId() == null){
esUtils.deleteEsDocument(FIELD_PLAN_ID, FIELD_PLAN_CONFIG_ID, planId, req.getPlanConfigId(), ORDER_OPTIMIZE_PLATE_MODEL.getIndex());
}
boardModelDO.setIsNewInsertPlate(Boolean.FALSE);
// 保存优化后的大板数据
esUtils.saveEsDocument(ORDER_OPTIMIZE_PLATE_MODEL.getIndex(), Collections.singletonList(boardModelDO));
// ES文档数据刷新
esUtils.refresh(ORDER_OPTIMIZE_PLATE_MODEL.getIndex());
if (processId == null) {
esUtils.deleteEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL.getIndex());
}
}
@@ -581,20 +524,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
planMapper.updateById(planDO.setProcessId(processId));
// 修改方案组,删除全部的方案组的优化信息
esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL.getIndex());
// 删除全部的生产优化信息
esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,ORDER_OPTIMIZE_PLATE_MODEL.getIndex());
// 保存此时的方案组的优化信息
esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL.getIndex(),schemeModelDOS);
return;
}
List<ProcessSchemeModelDO> processSchemeModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_PROCESS_SCHEME_CONFIG.getIndex(), ProcessSchemeModelDO.class);
List<ProcessSchemeModelDO> processSchemeModelDOS = new ArrayList<>();
// 保存排单对应的加工方案组的配置信息
if(CollUtil.isEmpty(processSchemeModelDOS)){
@@ -603,10 +537,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
}
esUtils.deleteEsDocument(FIELD_PLAN_ID,FIELD_PLAN_CONFIG_ID,planId,planConfigIds,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL.getIndex());
esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL.getIndex(),schemeModelDOS);
}
@@ -617,8 +547,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
@Override
public PlanProcessSchemeList getProcessSchemeConfig(Long processId,Long planId) {
esUtils.refresh(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL.getIndex());
PlanProcessSchemeList planProcessSchemeList = new PlanProcessSchemeList();
PlanDO planDO = validatePlanExists(planId);
@@ -629,7 +557,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<ProcessSchemeDTO> schemeDTOList;
// 获取排单对应的方案组的配置信息
List<ProcessSchemeModelDO> schemeModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_PROCESS_SCHEME_CONFIG.getIndex(), ProcessSchemeModelDO.class);
List<ProcessSchemeModelDO> schemeModelDOS = new ArrayList<>();
if(CollUtil.isNotEmpty(schemeModelDOS)){
@@ -653,13 +581,13 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// 查询排单对应的方案组信息
List<SaveProcessSchemeModelDO> saveProcessSchemeReqVOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL.getIndex(), SaveProcessSchemeModelDO.class);
List<SaveProcessSchemeModelDO> saveProcessSchemeReqVOS = new ArrayList<>();
if(CollUtil.isNotEmpty(saveProcessSchemeReqVOS)){
// 查询排单对应的优化信息
List<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, schemeDTOList.size(), ORDER_OPTIMIZE_PLATE_MODEL.getIndex(), OptimizeBoardModelDO.class);
List<OptimizeBoardModelDO> optimizeBoardModelDOS = new ArrayList<>();
if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){
@@ -743,7 +671,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
@Override
public List<OrderModelDO> getPlateModel(Long orderId) {
return esUtils.getEsDocumentByScroll(FIELD_ORDER_ID,orderId,1000,"imes_order_plate_model",OrderModelDO.class);
return new ArrayList<>();
}
@@ -907,93 +835,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
return result;
}
/**
* 分页获取订单ids下的es.orderModels数据
*
* @param orderIds
* @return
*/
private List<OrderModelDO> getOrderModels(List<Long> orderIds, List<Long> orderGoodsIds) {
List<OrderModelDO> results = new ArrayList<>();
try {
// 查询总数
CountRequest countRequest = new CountRequest.Builder()
.index(ORDER_PLATE_MODEL.getIndex())
.query(q -> q.bool(b -> b
.filter(f -> f.terms(t -> t
.field(FIELD_ORDER_ID)
.terms(e -> e.value(orderIds.stream().map(FieldValue::of).toList()))
))
.filter(f -> f.terms(t -> t
.field("plateGoodsId")
.terms(e -> e.value(orderGoodsIds.stream().map(FieldValue::of).toList()))
))
))
.build();
CountResponse totalResponse = elasticsearchClient.count(countRequest);
long total = totalResponse.count();
// 分页查询
int pageNum = PageUtil.totalPage(total, 1000);
List<FieldValue> searchAfterSortValues = null;
for (int page = 1; page <= pageNum; page++) {
SearchRequest.Builder searchBuilder = new SearchRequest.Builder()
.index(ORDER_PLATE_MODEL.getIndex())
.size(1000)
.sort(s -> s.field(f -> f.field("id.keyword").order(SortOrder.Asc)))
.query(q -> q.bool(b -> b
.filter(f -> f.terms(t -> t.field(FIELD_ORDER_ID).terms(e -> e.value(orderIds.stream().map(FieldValue::of).toList()))))
.filter(f -> f.terms(t -> t.field("plateGoodsId").terms(e -> e.value(orderGoodsIds.stream().map(FieldValue::of).toList()))))
))
.source(s -> s
.filter(f -> f
.includes("holeDetail", "sideHoleDetail", "contourDetail", "sideDetail", "id", FIELD_PLATE_ID, "pointDetail",
"rawPointDetail", "splitLength", "splitWidth", "offsetX", "offsetY")
)
)
.trackTotalHits(t -> t.enabled(false));
// 设置 search_after,非第一页时才需要
if (searchAfterSortValues != null) {
searchBuilder.searchAfter(searchAfterSortValues);
}
SearchResponse<OrderModelDO> response = elasticsearchClient.search(searchBuilder.build(), OrderModelDO.class);
List<Hit<OrderModelDO>> hits = response.hits().hits();
for (Hit<OrderModelDO> hit : hits) {
results.add(hit.source());
}
// 如果没有更多结果,终止循环
if (hits.isEmpty()) {
break;
}
// 获取最后一条记录的 sort 值,用于下一页的 search_after
searchAfterSortValues = hits.get(hits.size() - 1).sort();
// 防止 sort 信息缺失导致死循环
if (searchAfterSortValues == null || searchAfterSortValues.isEmpty()) {
break;
}
}
return results;
} catch (JsonpMappingException e) {
log.error(e.getMessage(), e);
throw new ServiceException(ORDER_DATA_ERROR);
} catch (IOException | ElasticsearchException e) {
log.error(e.getMessage(), e);
throw new ServiceException(DATA_DATA_ERROR);
}
}
@Override
public PageResult<OrderRespVOCopy> getOrderPlateDataFilter(FilterDataPageReqVO pageReqVO) {
@@ -1095,7 +936,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
@Override
public Boolean getNewPlanPlate(Long planId) {
List<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL.getIndex(), OptimizeBoardModelDO.class);
List<OptimizeBoardModelDO> optimizeBoardModelDOS = new ArrayList<>();
if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){
List<OptimizeBoardModelDO> modelDOS = optimizeBoardModelDOS.stream().filter(f ->Boolean.TRUE.equals(f.getIsNewInsertPlate())).toList();
@@ -1112,38 +953,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
@Override
public void updateProcessSchemeConfig(PlanSchemeConfigReqVO reqVO) {
try {
UpdateByQueryRequest.Builder builder = new UpdateByQueryRequest.Builder();
builder.index(PLAN_PROCESS_SCHEME_CONFIG.getIndex())
.query(qb -> qb.bool(bq -> bq
.must(mq -> mq.term(t->t.field(FIELD_PLAN_ID).value(reqVO.getPlanId())))
.must(mq -> mq.match(mtq -> mtq.field(FIELD_PLAN_CONFIG_ID).query(reqVO.getPlanConfigId())))
))
.script(s -> s.inline(i -> i
.source("""
ctx._source.processLineConfig = params.processLineConfig;
ctx._source.optimizationConfig = params.optimizationConfig;
ctx._source.analyzer = params.analyzer;
""")
.params("processLineConfig", JsonData.of(reqVO.getProcessLineConfig()))
.params("optimizationConfig", JsonData.of(reqVO.getOptimizationConfig()))
.params("analyzer", JsonData.of(reqVO.getAnalyzer()))
));
UpdateByQueryRequest request = builder.build();
// 执行更新操作
elasticsearchClient.updateByQuery(request);
}catch (Exception e){
log.error(e.getMessage());
throw new ServiceException(ES_DATA_ERROR);
}
}
@@ -1261,68 +1070,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
String logicalOperator,
String config,
FilterDataPageReqVO pageReqVO, String field) {
try {
// < 去重后查询到的总数量 , 查询到的板材造型数据 >
Map<Long,List<OrderPlateModel>> orderModelMap = new HashMap<>();
SearchRequest.Builder builder = new SearchRequest.Builder();
builder.index(ORDER_PLATE_MODEL.getIndex());
// 生成查询 SQL
String filterSql = generateSql(orderIdList, goodsIdList, logicalOperator, config);
TranslateRequest.Builder builderTranslate = new TranslateRequest.Builder();
builderTranslate.query(filterSql);
TranslateResponse translate = elasticsearchClient.sql().translate(builderTranslate.build());
builder.query(q->q.constantScore(c->c.filter(translate.query())));
// 排序
builder.sort(s->s.field(f->f.field("createTime").order(SortOrder.Desc)));
// 只查询一个字段
builder.source(q->q.filter(f->f.includes(field)));
// 去重
builder.collapse(q->q.field(field));
// 分页
builder.from(((pageReqVO.getPageNo() -1) * pageReqVO.getPageSize()));
builder.size(pageReqVO.getPageSize());
// 获取去重后的总数量
builder.aggregations("distinct_count",agg->agg.cardinality(c->c.field(field)));
// 执行查询
SearchResponse<OrderPlateModel> search = elasticsearchClient.search(builder.build(), OrderPlateModel.class);
Map<String, Aggregate> aggregations = search.aggregations();
// 获取总数量
long value = aggregations.get("distinct_count").cardinality().value();
List<Hit<OrderPlateModel>> hits = search.hits().hits();
if (CollUtil.isNotEmpty(hits)) {
orderModelMap.put(value,hits.stream().map(Hit::source).toList());
}
return orderModelMap;
} catch (Exception e) {
log.error(ES_ORDER_MODEL_DATA_ERROR+e.getMessage());
throw new ServiceException(DATA_DATA_ERROR);
}
return new HashMap<>();
}
private String conversion(String filed) {
@@ -1451,33 +1201,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
private void updatePlanProcessScheme(Long planId,Long planConfigId,Boolean isLock) {
try {
UpdateByQueryRequest.Builder builder = new UpdateByQueryRequest.Builder();
builder.index(ORDER_OPTIMIZE_PLATE_MODEL.getIndex())
.query(qb -> qb.bool(bq -> bq.filter(f->{
f.term(t->t.field(FIELD_PLAN_ID).value(planId));
f.term(t->t.field(FIELD_PLAN_CONFIG_ID).value(planConfigId));
return f;
})
))
.script(s -> s.inline(i -> i
.source("ctx._source.isLock = params.new_value")
.params("new_value", JsonData.of(isLock))
));
UpdateByQueryRequest request = builder.build();
// 执行更新操作
elasticsearchClient.updateByQuery(request);
}catch (Exception e){
log.error(e.getMessage());
throw new ServiceException(ES_DATA_ERROR);
}
}
@@ -1610,14 +1333,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
updateData.put("cutedBlockNumber", optimizeBoardModelDO.getCutedBlockNumber());
updateData.put("remainBoardInfo", toJsonString(remainBoardInfos));
updateData.put(FIELD_UPDATETIME, simpleDateFormat.format(date));
try {
esDocumentService.updateById(ORDER_OPTIMIZE_PLATE_MODEL.getIndex(), optimizeBoardModelDO.getId(), HashMap.class, updateData);
} catch (IOException | ElasticsearchException e) {
log.error("Failed to sync with Elasticsearch: {}", e.getMessage());
throw new ServiceException(ES_DATA_ERROR);
}
}
@@ -1786,13 +1501,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
f.setProcessId(processId);
f.setPlanId(planId);
});
// 删除旧的排单对应的加工方案组的配置信息
esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,PLAN_PROCESS_SCHEME_CONFIG.getIndex());
// 保存新的排单对应的加工方案组的配置信息
esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_CONFIG.getIndex(),modelDOS);
}
/**
@@ -1,274 +1,274 @@
package com.cf.imes.module.executor.service.order;
import cn.hutool.core.collection.CollUtil;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.ElasticsearchException;
import co.elastic.clients.elasticsearch._types.FieldValue;
import co.elastic.clients.elasticsearch.core.*;
import co.elastic.clients.elasticsearch.core.search.Hit;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.es.core.service.ESDocumentService;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRemark;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.PartsDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO;
import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper;
import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper;
import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper;
import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.PartsMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateGoodMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.executor.dal.mysql.rawgoods.RawGoodsMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import jakarta.annotation.Resource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.function.BiConsumer;
import java.util.stream.Collectors;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR;
import static com.cf.imes.module.executor.enums.EsIndexEnum.*;
/**
* @author Beal
* 订单入库处理器
*/
@Slf4j
@Component
public class OrderInputProcessor {
@Resource
private IdentifierGenerator identifierGenerator;
/*private IdentifierGenerator identifierGenerator = new SnowFlakeGenerator(0, 0);*/
@Resource
private OrderMapper orderMapper;
@Resource
private RawGoodsMapper rawGoodsMapper;
@Resource
private OrderBodyMapper orderBodyMapper;
@Resource
private OrderGroupMapper orderGroupMapper;
@Resource
private OrderPartsMapper orderPartsMapper;
@Resource
private PlateMapper plateMapper;
@Resource
private OrderItemMapper orderItemMapper;
@Resource
private GoodsMapper goodsMapper;
@Resource
private PlateGoodMapper plateGoodMapper;
@Resource
private ESDocumentService esDocumentService;
@Resource
private PartsMapper partsMapper;
@Resource
private ElasticsearchClient elasticsearchClient;
private static final String FIELD_ORDER_ID = "orderId";
/**
* 批量保存订单小板五金数据
*
* @param rawGoodsDOS
* @param orderBodyDOS
* @param orderGroupDOS
* @param orderPartsDOS
* @param plateDOS
* @param itemDOS
*/
@Transactional(rollbackFor = Exception.class)
public void batchInsert(Collection<RawGoodsDO> rawGoodsDOS,
Collection<OrderBodyDO> orderBodyDOS,
Collection<OrderGroupDO> orderGroupDOS,
Collection<OrderPartsDO> orderPartsDOS,
Collection<PlateDO> plateDOS,
Collection<OrderItemDO> itemDOS,
Collection<GoodsDO> goodsDOS,
Collection<PlateGoodDO> plateGoodDOS,
Collection<PartsDO> partsDOS) {
// if (rawGoodsDOS != null)
// for (int i = 0; i < rawGoodsDOS.size(); i += 1000) {
// rawGoodsMapper.insertBatch(rawGoodsDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
// }
// if (orderBodyDOS != null)
// for (int i = 0; i < orderBodyDOS.size(); i += 1000) {
// orderBodyMapper.insertBatch(orderBodyDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
// }
// if (orderGroupDOS != null)
// for (int i = 0; i < orderGroupDOS.size(); i += 1000) {
// orderGroupMapper.insertBatch(orderGroupDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
// }
// if (orderPartsDOS != null)
// for (int i = 0; i < orderPartsDOS.size(); i += 1000) {
// orderPartsMapper.insertBatch(orderPartsDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
// }
// if (plateDOS != null)
// for (int i = 0; i < plateDOS.size(); i += 1000) {
// plateMapper.insertBatch(plateDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
// }
// if (itemDOS != null) {
// for (int i = 0; i < itemDOS.size(); i += 1000) {
// orderItemMapper.insertBatch(itemDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
//package com.cf.imes.module.executor.service.order;
//
//import cn.hutool.core.collection.CollUtil;
//import co.elastic.clients.elasticsearch.ElasticsearchClient;
//import co.elastic.clients.elasticsearch._types.ElasticsearchException;
//import co.elastic.clients.elasticsearch._types.FieldValue;
//import co.elastic.clients.elasticsearch.core.*;
//import co.elastic.clients.elasticsearch.core.search.Hit;
//import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
//import com.cf.imes.framework.common.exception.ServiceException;
//import com.cf.imes.framework.es.core.service.ESDocumentService;
//import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRemark;
//import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
//import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
//import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
//import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
//import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
//import com.cf.imes.module.executor.dal.dataobject.orderParts.PartsDO;
//import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
//import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
//import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
//import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO;
//import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper;
//import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
//import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper;
//import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper;
//import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper;
//import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
//import com.cf.imes.module.executor.dal.mysql.orderParts.PartsMapper;
//import com.cf.imes.module.executor.dal.mysql.plate.PlateGoodMapper;
//import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
//import com.cf.imes.module.executor.dal.mysql.rawgoods.RawGoodsMapper;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Component;
//import org.springframework.transaction.annotation.Transactional;
//
//import jakarta.annotation.Resource;
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.Collection;
//import java.util.List;
//import java.util.function.BiConsumer;
//import java.util.stream.Collectors;
//
//import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR;
//import static com.cf.imes.module.executor.enums.EsIndexEnum.*;
//
///**
// * @author Beal
// * 订单入库处理器
// */
//@Slf4j
////@Component
//public class OrderInputProcessor {
//
// @Resource
// private IdentifierGenerator identifierGenerator;
// /*private IdentifierGenerator identifierGenerator = new SnowFlakeGenerator(0, 0);*/
//
// @Resource
// private OrderMapper orderMapper;
//
// @Resource
// private RawGoodsMapper rawGoodsMapper;
//
// @Resource
// private OrderBodyMapper orderBodyMapper;
//
// @Resource
// private OrderGroupMapper orderGroupMapper;
//
// @Resource
// private OrderPartsMapper orderPartsMapper;
//
// @Resource
// private PlateMapper plateMapper;
//
// @Resource
// private OrderItemMapper orderItemMapper;
//
// @Resource
// private GoodsMapper goodsMapper;
//
// @Resource
// private PlateGoodMapper plateGoodMapper;
//
// @Resource
// private ESDocumentService esDocumentService;
//
// @Resource
// private PartsMapper partsMapper;
//
// @Resource
// private ElasticsearchClient elasticsearchClient;
//
// private static final String FIELD_ORDER_ID = "orderId";
//
//
// /**
// * 批量保存订单小板五金数据
// *
// * @param rawGoodsDOS
// * @param orderBodyDOS
// * @param orderGroupDOS
// * @param orderPartsDOS
// * @param plateDOS
// * @param itemDOS
// */
// @Transactional(rollbackFor = Exception.class)
// public void batchInsert(Collection<RawGoodsDO> rawGoodsDOS,
// Collection<OrderBodyDO> orderBodyDOS,
// Collection<OrderGroupDO> orderGroupDOS,
// Collection<OrderPartsDO> orderPartsDOS,
// Collection<PlateDO> plateDOS,
// Collection<OrderItemDO> itemDOS,
// Collection<GoodsDO> goodsDOS,
// Collection<PlateGoodDO> plateGoodDOS,
// Collection<PartsDO> partsDOS) {
//
//
//// if (rawGoodsDOS != null)
//// for (int i = 0; i < rawGoodsDOS.size(); i += 1000) {
//// rawGoodsMapper.insertBatch(rawGoodsDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
//// }
//// if (orderBodyDOS != null)
//// for (int i = 0; i < orderBodyDOS.size(); i += 1000) {
//// orderBodyMapper.insertBatch(orderBodyDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
//// }
//// if (orderGroupDOS != null)
//// for (int i = 0; i < orderGroupDOS.size(); i += 1000) {
//// orderGroupMapper.insertBatch(orderGroupDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
//// }
//// if (orderPartsDOS != null)
//// for (int i = 0; i < orderPartsDOS.size(); i += 1000) {
//// orderPartsMapper.insertBatch(orderPartsDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
//// }
//// if (plateDOS != null)
//// for (int i = 0; i < plateDOS.size(); i += 1000) {
//// plateMapper.insertBatch(plateDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
//// }
//// if (itemDOS != null) {
//// for (int i = 0; i < itemDOS.size(); i += 1000) {
//// orderItemMapper.insertBatch(itemDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
//// }
//// }
//// if (goodsDOS != null) {
//// for (int i = 0; i < itemDOS.size(); i += 1000) {
//// goodsMapper.insertBatch(goodsDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
//// }
//// }
//// if (plateGoodDOS != null) {
//// for (int i = 0; i < itemDOS.size(); i += 1000) {
//// plateGoodMapper.insertBatch(plateGoodDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
//// }
//// }
//
// insertInBatches(rawGoodsDOS, 1000, (batch, index) -> rawGoodsMapper.insertBatch((Collection<RawGoodsDO>) batch));
// insertInBatches(orderBodyDOS, 1000, (batch, index) -> orderBodyMapper.insertBatch((Collection<OrderBodyDO>) batch));
// insertInBatches(orderGroupDOS, 1000, (batch, index) -> orderGroupMapper.insertBatch((Collection<OrderGroupDO>) batch));
// insertInBatches(orderPartsDOS, 1000, (batch, index) -> orderPartsMapper.insertBatch((Collection<OrderPartsDO>) batch));
// insertInBatches(plateDOS, 1000, (batch, index) -> plateMapper.insertBatch((Collection<PlateDO>) batch));
// insertInBatches(itemDOS, 1000, (batch, index) -> orderItemMapper.insertBatch((Collection<OrderItemDO>) batch));
// insertInBatches(goodsDOS, 1000, (batch, index) -> goodsMapper.insertBatch((Collection<GoodsDO>) batch));
//// insertInBatches(plateGoodDOS, 1000, (batch, index) -> plateGoodMapper.insertBatch((Collection<PlateGoodDO>) batch));
// insertInBatches(partsDOS, 1000, (batch, index) -> partsMapper.insertBatch((Collection<PartsDO>) batch));
// }
//
// private void insertInBatches(Collection<?> entities, int batchSize, BiConsumer<Collection<?>, Integer> insertFunction) {
// if (entities != null) {
// int total = entities.size();
// for (int i = 0; i < total; i += batchSize) {
// Collection<?> batch = entities.stream()
// .skip(i)
// .limit(batchSize)
// .collect(Collectors.toList());
// insertFunction.accept(batch, i);
// }
// }
// if (goodsDOS != null) {
// for (int i = 0; i < itemDOS.size(); i += 1000) {
// goodsMapper.insertBatch(goodsDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
// }
//
// /**
// * 保存订单造型数据
// *
// * @param orderModelDOs
// */
// public void batchSaveModel(List<OrderModelDO> orderModelDOs) {
// try {
// BulkResponse bulkResponse = esDocumentService.bulkCreate(ORDER_PLATE_MODEL.getIndex(), orderModelDOs);
// boolean errors = bulkResponse.errors();
// if (errors) {
// log.error(bulkResponse.items().toString());
// throw new ServiceException(500, "未知异常");
// }
// } catch (IOException | ElasticsearchException e) {
// log.error(e.getMessage(), e);
// throw new RuntimeException(e);
// }
// if (plateGoodDOS != null) {
// for (int i = 0; i < itemDOS.size(); i += 1000) {
// plateGoodMapper.insertBatch(plateGoodDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
//
// }
//
//
//
//
//
// /**
// * 保存订单配件备注数据
// *
// * @param orderPartsRemarks
// */
// public void batchSaveOrderPartsModel(List<OrderPartsRemark> orderPartsRemarks) {
// try {
// BulkResponse bulkResponse = esDocumentService.bulkCreate(ORDER_PARTS_REMARK_MODEL.getIndex(), orderPartsRemarks);
// boolean errors = bulkResponse.errors();
// if (errors) {
// log.error(bulkResponse.items().toString());
// throw new ServiceException(500, "未知异常");
// }
// } catch (IOException | ElasticsearchException e) {
// log.error(e.getMessage(), e);
// throw new RuntimeException(e);
// }
insertInBatches(rawGoodsDOS, 1000, (batch, index) -> rawGoodsMapper.insertBatch((Collection<RawGoodsDO>) batch));
insertInBatches(orderBodyDOS, 1000, (batch, index) -> orderBodyMapper.insertBatch((Collection<OrderBodyDO>) batch));
insertInBatches(orderGroupDOS, 1000, (batch, index) -> orderGroupMapper.insertBatch((Collection<OrderGroupDO>) batch));
insertInBatches(orderPartsDOS, 1000, (batch, index) -> orderPartsMapper.insertBatch((Collection<OrderPartsDO>) batch));
insertInBatches(plateDOS, 1000, (batch, index) -> plateMapper.insertBatch((Collection<PlateDO>) batch));
insertInBatches(itemDOS, 1000, (batch, index) -> orderItemMapper.insertBatch((Collection<OrderItemDO>) batch));
insertInBatches(goodsDOS, 1000, (batch, index) -> goodsMapper.insertBatch((Collection<GoodsDO>) batch));
// insertInBatches(plateGoodDOS, 1000, (batch, index) -> plateGoodMapper.insertBatch((Collection<PlateGoodDO>) batch));
insertInBatches(partsDOS, 1000, (batch, index) -> partsMapper.insertBatch((Collection<PartsDO>) batch));
}
private void insertInBatches(Collection<?> entities, int batchSize, BiConsumer<Collection<?>, Integer> insertFunction) {
if (entities != null) {
int total = entities.size();
for (int i = 0; i < total; i += batchSize) {
Collection<?> batch = entities.stream()
.skip(i)
.limit(batchSize)
.collect(Collectors.toList());
insertFunction.accept(batch, i);
}
}
}
/**
* 保存订单造型数据
*
* @param orderModelDOs
*/
public void batchSaveModel(List<OrderModelDO> orderModelDOs) {
try {
BulkResponse bulkResponse = esDocumentService.bulkCreate(ORDER_PLATE_MODEL.getIndex(), orderModelDOs);
boolean errors = bulkResponse.errors();
if (errors) {
log.error(bulkResponse.items().toString());
throw new ServiceException(500, "未知异常");
}
} catch (IOException | ElasticsearchException e) {
log.error(e.getMessage(), e);
throw new RuntimeException(e);
}
}
/**
* 保存订单配件备注数据
*
* @param orderPartsRemarks
*/
public void batchSaveOrderPartsModel(List<OrderPartsRemark> orderPartsRemarks) {
try {
BulkResponse bulkResponse = esDocumentService.bulkCreate(ORDER_PARTS_REMARK_MODEL.getIndex(), orderPartsRemarks);
boolean errors = bulkResponse.errors();
if (errors) {
log.error(bulkResponse.items().toString());
throw new ServiceException(500, "未知异常");
}
} catch (IOException | ElasticsearchException e) {
log.error(e.getMessage(), e);
throw new RuntimeException(e);
}
}
/**
* 订单Id删除
*/
public void deleteByOrderId(Long orderId, String index) {
try {
// 查文档_id
SearchResponse<Void> search = elasticsearchClient.search(s -> s
.index(index)
.size(1) // 只取一条
.query(q -> q.term(t -> t.field("orderId").value(orderId)))
.source(src -> src.fetch(false)), // 不拉取 _source
Void.class
);
List<Hit<Void>> hits = search.hits().hits();
if (hits.isEmpty()) {
log.warn("No document found for orderId: {}", orderId);
return;
}
String docId = hits.get(0).id();
// 按 _id 删除
elasticsearchClient.delete(d -> d.index(index).id(docId));
log.info("Successfully deleted document with orderId={} (docId={})", orderId, docId);
} catch (IOException | ElasticsearchException e) {
log.error("Error deleting documents with orderId {}: {}", orderId, e);
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
}
/**
* 批量删除
*/
public void deleteByOrderId(List<Long> orderIds, String index) {
List<FieldValue> fieldValues = orderIds.stream().map(FieldValue::of).toList();
DeleteByQueryRequest.Builder builder = new DeleteByQueryRequest.Builder();
builder.index(index);
builder.query(q -> q.terms(b -> b.field(FIELD_ORDER_ID).terms(e -> e.value(fieldValues))));
try {
DeleteByQueryResponse response = elasticsearchClient.deleteByQuery(builder.build());
log.info("Deleted {} documents with planId {}", response.deleted(), orderIds);
} catch (IOException | ElasticsearchException e) {
log.error("Error deleting documents with planId {}: {}", orderIds, e);
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
}
}
//
// }
//
// /**
// * 订单Id删除
// */
// public void deleteByOrderId(Long orderId, String index) {
// try {
// // 查文档_id
// SearchResponse<Void> search = elasticsearchClient.search(s -> s
// .index(index)
// .size(1) // 只取一条
// .query(q -> q.term(t -> t.field("orderId").value(orderId)))
// .source(src -> src.fetch(false)), // 不拉取 _source
// Void.class
// );
// List<Hit<Void>> hits = search.hits().hits();
// if (hits.isEmpty()) {
// log.warn("No document found for orderId: {}", orderId);
// return;
// }
//
// String docId = hits.get(0).id();
//
// // 按 _id 删除
// elasticsearchClient.delete(d -> d.index(index).id(docId));
// log.info("Successfully deleted document with orderId={} (docId={})", orderId, docId);
// } catch (IOException | ElasticsearchException e) {
// log.error("Error deleting documents with orderId {}: {}", orderId, e);
// throw new ServiceException(INTERNAL_SERVER_ERROR);
// }
// }
//
// /**
// * 批量删除
// */
// public void deleteByOrderId(List<Long> orderIds, String index) {
// List<FieldValue> fieldValues = orderIds.stream().map(FieldValue::of).toList();
//
// DeleteByQueryRequest.Builder builder = new DeleteByQueryRequest.Builder();
// builder.index(index);
//
// builder.query(q -> q.terms(b -> b.field(FIELD_ORDER_ID).terms(e -> e.value(fieldValues))));
//
// try {
// DeleteByQueryResponse response = elasticsearchClient.deleteByQuery(builder.build());
// log.info("Deleted {} documents with planId {}", response.deleted(), orderIds);
// } catch (IOException | ElasticsearchException e) {
// log.error("Error deleting documents with planId {}: {}", orderIds, e);
// throw new ServiceException(INTERNAL_SERVER_ERROR);
// }
// }
//}
@@ -81,7 +81,6 @@ import com.cf.imes.module.executor.service.orderImport.factory.OrderImportHandle
import com.cf.imes.module.executor.service.ordercomponent.OrderComponentService;
import com.cf.imes.module.executor.util.deviseData.structure.FieldConstants;
import com.cf.imes.module.executor.util.deviseData.structure.PlateDetail;
import com.cf.imes.module.executor.util.elasticsearch.EsUtils;
import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataTypeVo;
import com.cf.imes.module.infra.api.file.FileApi;
import lombok.extern.slf4j.Slf4j;
@@ -111,7 +110,6 @@ import java.util.stream.IntStream;
import static com.cf.imes.framework.common.util.json.JsonUtils.unzipString;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
import static com.cf.imes.module.executor.enums.EsIndexEnum.*;
import static com.cf.imes.module.infra.enums.ErrorCodeConstants.FILE_NOT_EXISTS;
/**
@@ -154,9 +152,6 @@ public class OrderServiceImpl implements OrderService {
@Resource
private OrderItemMapper orderItemMapper;
@Resource
private OrderInputProcessor orderInputProcessor;
@Resource
private PartsMapper partsMapper;
@@ -166,10 +161,6 @@ public class OrderServiceImpl implements OrderService {
@Resource
private PlanItemMapper planItemMapper;
@Resource
private EsUtils esUtils;
@Resource
private OrderComponentService orderComponentService;
@@ -693,7 +684,6 @@ public class OrderServiceImpl implements OrderService {
customPlateNoGenerateService.generateCustomPlateNo(order, plateDO, true);
orderMapper.insert(order);
orderInputProcessor.batchInsert(rawGoodsDO, bodyDO, groupDO, partsDO, plateDO, itemDO, goodsDO, plateGoodDOS, partsDOS);
List<OrderModelDO> orderModelDOs = BeanUtils.toBean(plateDetail, OrderModelDO.class);
if (orderModelDOs != null && !orderModelDOs.isEmpty()) {
@@ -701,12 +691,8 @@ public class OrderServiceImpl implements OrderService {
orderModelDOs.forEach(orderModelDO -> orderModelDO.setOrderId(order.getId()));
// 保存大板的分类和实际ID和未优化
saveOrderPlateModel(plateDO,goodsDO,orderModelDOs);
orderInputProcessor.batchSaveModel(orderModelDOs);
}
if (!partsRemark.isEmpty()) {
orderInputProcessor.batchSaveOrderPartsModel(partsRemark);
}
return order == null ? 0 : order.getId();
}
@@ -770,18 +756,13 @@ public class OrderServiceImpl implements OrderService {
customPlateNoGenerateService.generateCustomPlateNo(orderDO, plateDO, index == 0);
insertOrder(orderDO, index);
orderInputProcessor.batchInsert(rawGoodsDO, bodyDO, groupDO, partsDO, plateDO, itemDO, goodsDO, plateGoodDOS, partsDOList);
if (plateDetail != null && !plateDetail.isEmpty()){
List<OrderModelDO> orderModelDOs = BeanUtils.toBean(plateDetail, OrderModelDO.class);
saveOrderPlateModel(plateDO,goodsDO,orderModelDOs);
orderInputProcessor.batchSaveModel(orderModelDOs);
}
if (orderPartsRemarks != null && !orderPartsRemarks.isEmpty()) {
orderInputProcessor.batchSaveOrderPartsModel(orderPartsRemarks);
}
}
@@ -1600,7 +1581,6 @@ public class OrderServiceImpl implements OrderService {
f.setActualGoodsId(goodsDO.stream().filter(g->g.getId().equals(f.getGoodsId())).map(GoodsDO::getGoodsId).toList().get(0))
);
orderModelDOs.forEach(f->{
f.setId(f.getPlateId().toString());
f.setGoodsId(orderGoodsPlateIds.stream().filter(fo->fo.getId().equals(f.getPlateId())).map(OrderGoodsPlateIds::getActualGoodsId).toList().get(0));
f.setPlateGoodsId(orderGoodsPlateIds.stream().filter(fo->fo.getId().equals(f.getPlateId())).map(OrderGoodsPlateIds::getGoodsId).toList().get(0));
@@ -1663,7 +1643,7 @@ public class OrderServiceImpl implements OrderService {
List<Long> plateIdList = labelOrderPlateData.stream().map(LabelOrderPlateData::getPlateId).distinct().toList();
// 小板造型信息
orderModelDOS = esUtils.getEsDocument("orderId","plateId", orderIds,plateIdList, plateIdList.size(), ORDER_PLATE_MODEL.getIndex(), OrderModelDO.class);
orderModelDOS = new ArrayList<>();
}else {
@@ -1675,7 +1655,7 @@ public class OrderServiceImpl implements OrderService {
// 板材信息
labelOrderPlateData = plateMapper.selectLabelOrderPlateDataByOrderId(orderId,organId);
orderModelDOS = esUtils.getEsDocumentByScroll("orderId", orderIds,1000, ORDER_PLATE_MODEL.getIndex(), OrderModelDO.class);
orderModelDOS = new ArrayList<>();
}
@@ -1716,7 +1696,7 @@ public class OrderServiceImpl implements OrderService {
// 补充实际选择的大板信息-即生产的信息
if(CollUtil.isNotEmpty(planIdList)){
List<PlanActualGoodsModelDO> actualGoodsModelDOS = esUtils.getEsDocument("planId", planIdList, planIdList.size(), PLAN_ACTUAL_GOODS_MODEL.getIndex(), PlanActualGoodsModelDO.class);
List<PlanActualGoodsModelDO> actualGoodsModelDOS = new ArrayList<>();
if(CollUtil.isNotEmpty(actualGoodsModelDOS)) {
labelOrderPlateData.forEach(f -> {
@@ -2,15 +2,6 @@ package com.cf.imes.module.executor.service.order;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.FieldValue;
import co.elastic.clients.elasticsearch._types.SortOrder;
import co.elastic.clients.elasticsearch._types.aggregations.Aggregate;
import co.elastic.clients.elasticsearch._types.aggregations.CalendarInterval;
import co.elastic.clients.elasticsearch._types.aggregations.DateHistogramAggregation;
import co.elastic.clients.elasticsearch.core.SearchRequest;
import co.elastic.clients.elasticsearch.core.SearchResponse;
import co.elastic.clients.util.NamedValue;
import com.cf.imes.framework.common.enums.OrderStatusEnum;
import com.cf.imes.framework.common.enums.StatisticsUnit;
import com.cf.imes.framework.common.util.date.LocalDateTimeUtils;
@@ -35,7 +26,6 @@ import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import jakarta.annotation.Resource;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
@@ -48,7 +38,6 @@ import static com.cf.imes.framework.common.constants.StatisticsConstants.DATELIS
import static com.cf.imes.framework.common.constants.StatisticsConstants.SERIES_FIELD_NAME;
import static com.cf.imes.framework.common.util.time.StatisticsChangeUtils.generateDateRangeAxis;
import static com.cf.imes.framework.common.util.time.StatisticsChangeUtils.getDateList;
import static com.cf.imes.module.executor.enums.EsIndexEnum.ORDER_OPTIMIZE_PLATE_MODEL;
/**
* @author Gqr
@@ -74,9 +63,6 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
@Resource
private PlateGoodMapper plateGoodMapper;
@Resource
private ElasticsearchClient client;
// 常用的字段key
private static final String ORDER_REMAIN_PLATE_MODEL_CREATE_TIME_FIELDNAME = "createTime";
private static final String ORDER_REMAIN_PLATE_MODEL_GOODS_GROUP_NAME = "goods_group";
@@ -556,24 +542,6 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
}
/**
* 根据统计维度获取es分组的dateHistogram
*
* @return
*/
private DateHistogramAggregation.Builder getDateHistogram(Integer unit, DateHistogramAggregation.Builder builder) {
switch (StatisticsUnit.fromValue(unit)) {
case QUARTER:
return builder.calendarInterval(CalendarInterval.Quarter).format("yyyy-Q");
case MONTH:
return builder.calendarInterval(CalendarInterval.Month).format(DATE_TIME_FORMATTER_PATTERN_YEAR_MONTH);
case DAY, WEEK:
default:
return builder.calendarInterval(CalendarInterval.Day).format(DATE_TIME_FORMATTER_PATTERN_YEAR_MONTH_DAY);
}
}
/**
* 年月日转年月周
*
@@ -5,10 +5,6 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.FieldValue;
import co.elastic.clients.elasticsearch.core.UpdateByQueryRequest;
import co.elastic.clients.json.JsonData;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -61,7 +57,6 @@ import com.cf.imes.module.executor.dal.mysql.remainplaten.RemainPlateMapper;
import com.cf.imes.module.executor.enums.ErrorCodeConstants;
import com.cf.imes.module.executor.enums.OrderPlanQueryTypeEnum;
import com.cf.imes.module.executor.enums.OrderStatusEnum;
import com.cf.imes.module.executor.util.elasticsearch.EsUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.aop.framework.AopContext;
@@ -79,7 +74,6 @@ import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.DATA_DATA_ERROR;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.framework.common.pojo.PageParam.PAGE_SIZE_NONE;
import static com.cf.imes.framework.common.util.json.JsonUtils.parseArray;
@@ -128,12 +122,6 @@ public class PlanServiceImpl implements PlanService {
@Resource
private IdentifierGenerator identifierGenerator;
@Resource
private ElasticsearchClient elasticsearchClient;
@Resource
private EsUtils esUtils;
@Resource
private OrderGroupMapper orderGroupMapper;
@@ -1057,7 +1045,7 @@ public class PlanServiceImpl implements PlanService {
return new ArrayList<>();
}
List<OptimizeBoardModelDO> boardModelDOS = esUtils.getEsDocument(FIELD_PLANID, planId, ORDER_OPTIMIZE_PLATE_MODEL.getIndex(), OptimizeBoardModelDO.class);
List<OptimizeBoardModelDO> boardModelDOS = new ArrayList<>();
if(CollUtil.isNotEmpty(boardModelDOS)) {
@@ -1599,124 +1587,6 @@ public class PlanServiceImpl implements PlanService {
}
private void updateProcessSchemeStatus(List<Long> planIds) {
try {
UpdateByQueryRequest.Builder builder = new UpdateByQueryRequest.Builder();
List<FieldValue> fieldValues = planIds.stream().map(FieldValue::of).toList();
builder.index(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL.getIndex())
.query(qb -> qb.bool(bq -> bq
.filter(mq -> mq.terms(tq -> tq.field(FIELD_PLANID).terms(t->t.value(fieldValues))))
.filter(mq -> mq.match(mtq -> mtq.field("machineType").query(MachineTypeEnum.CUTTING.getType())))
))
.script(s -> s.inline(i -> i
.source("ctx._source.isOptimized = params.new_value")
.params(ES_FIELD_NEWVALUE, JsonData.of(false))
));
UpdateByQueryRequest request = builder.build();
// 执行更新操作
elasticsearchClient.updateByQuery(request);
}catch (Exception e){
log.error(ORDER_PLAN_PROCESS_SCHEME_STATUS_UPDATE_ERROR_MSG + e.getMessage(), e);
throw new ServiceException(DATA_DATA_ERROR);
}
}
private void insertPlateModelPlanId(List<Long> orderIds,List<Long> plateIds,Long planId) {
try {
UpdateByQueryRequest.Builder builder = new UpdateByQueryRequest.Builder();
List<FieldValue> fieldValues1 = orderIds.stream().map(FieldValue::of).toList();
List<FieldValue> fieldValues2 = plateIds.stream().map(FieldValue::of).toList();
builder.index(ORDER_PLATE_MODEL.getIndex())
.query(qb -> qb.bool(bq -> bq
.filter(f->f.terms(t->t.field("orderId").terms(ts->ts.value(fieldValues1))))
.filter(f->f.terms(t->t.field("plateId").terms(ts->ts.value(fieldValues2))))
))
.script(s -> s.inline(i -> i
.source("ctx._source.planId = params.new_value")
.params(ES_FIELD_NEWVALUE, JsonData.of(planId))
));
UpdateByQueryRequest request = builder.build();
// 执行更新操作
elasticsearchClient.updateByQuery(request);
}catch (Exception e){
log.error(ORDER_PLAN_PROCESS_SCHEME_STATUS_UPDATE_ERROR_MSG + e.getMessage(), e);
throw new ServiceException(DATA_DATA_ERROR);
}
}
private void removePlateModelPlanId(List<Long> orderIds,List<Long> planIds,List<Long> plateIds) {
try {
UpdateByQueryRequest.Builder builder = new UpdateByQueryRequest.Builder();
List<FieldValue> fieldValues1 = orderIds.stream().map(FieldValue::of).toList();
List<FieldValue> fieldValues2 = planIds.stream().map(FieldValue::of).toList();
List<FieldValue> fieldValues3 = plateIds.stream().map(FieldValue::of).toList();
builder.index(ORDER_PLATE_MODEL.getIndex())
.query(qb -> qb.bool(bq -> {
bq.filter(f->f.terms(t->t.field("orderId").terms(ts->ts.value(fieldValues1))));
bq.filter(f->f.terms(t->t.field(FIELD_PLANID).terms(ts->ts.value(fieldValues2))));
if(CollUtil.isNotEmpty(plateIds)){
bq.filter(f->f.terms(t->t.field("plateId").terms(ts->ts.value(fieldValues3))));
}
return bq;
}
))
.script(s -> s.inline(i -> i
.source("ctx._source.planId = params.new_value")
.params(ES_FIELD_NEWVALUE, JsonData.of(0))
));
UpdateByQueryRequest request = builder.build();
// 执行更新操作
elasticsearchClient.updateByQuery(request);
}catch (Exception e){
log.error(ORDER_PLAN_PROCESS_SCHEME_STATUS_UPDATE_ERROR_MSG + e.getMessage(), e);
throw new ServiceException(DATA_DATA_ERROR);
}
}
/**
* 订单列表匹配到商品上
*
@@ -4,11 +4,6 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.ObjectUtil;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.FieldValue;
import co.elastic.clients.elasticsearch.core.SearchRequest;
import co.elastic.clients.elasticsearch.core.SearchResponse;
import co.elastic.clients.elasticsearch.core.search.Hit;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -61,7 +56,6 @@ import com.cf.imes.module.executor.dal.mysql.plate.PlateGoodMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.executor.enums.OrderItemType;
import com.cf.imes.module.executor.enums.OrderStatusEnum;
import com.cf.imes.module.executor.service.order.OrderInputProcessor;
import com.cf.imes.module.executor.service.order.OrderService;
import com.cf.imes.module.executor.service.orderbody.OrderBodyService;
import com.cf.imes.module.executor.service.ordercomponent.OrderComponentService;
@@ -74,14 +68,12 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import jakarta.annotation.Resource;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
import static com.cf.imes.module.executor.enums.EsIndexEnum.ORDER_PLATE_MODEL;
@@ -124,12 +116,6 @@ public class PlateServiceImpl implements PlateService {
@Resource
private SnowflakeIdWorker3rd idWorker;
@Resource
private ElasticsearchClient elasticsearchClient;
@Resource
private OrderInputProcessor orderInputProcessor;
@Resource
private IdentifierGenerator identifierGenerator;
@@ -703,8 +689,6 @@ public class PlateServiceImpl implements PlateService {
updateOrdersPlanPlateNumAndArea(orderPlanPlateNumAndAreaRespVOMap);
updateOrderGoodsPlanPlateNumAndArea(orderGoodsPlanPlateNumAndAreaRespVOMap);
orderInputProcessor.batchSaveModel(orderPlateModelDOS);
return insertPlateRespVOS;
}
@@ -784,23 +768,7 @@ public class PlateServiceImpl implements PlateService {
private List<OrderModelDO> buildRespByPlateIds(Collection<Long> plateIds, String index) {
List<FieldValue> fieldValues = plateIds.stream().map(FieldValue::of).toList();
SearchRequest.Builder builder = new SearchRequest.Builder();
builder.index(index);
builder.query(q -> q.terms(b -> b.field(FIELD_PLATE_ID).terms(e -> e.value(fieldValues))));
builder.size(plateIds.size());
try {
SearchResponse<OrderModelDO> search = elasticsearchClient.search(builder.build(), OrderModelDO.class);
List<Hit<OrderModelDO>> hits = search.hits().hits();
if (CollUtil.isNotEmpty(hits)) {
return hits.stream().map(Hit::source).toList();
}
return new ArrayList<>();
} catch (IOException e) {
log.error(e.getMessage());
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
return new ArrayList<>();
}