mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-13 05:12:07 +08:00
Merge branch 'main' of ssh://192.168.1.205:9922/cf_devdept2/cf_imes_server
This commit is contained in:
+3
@@ -5,8 +5,10 @@ import java.util.*;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateInfoVO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 生产单开料排单明细 Mapper
|
||||
@@ -17,4 +19,5 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
public interface PlanItemMapper extends BaseMapperX<PlanItemDO> {
|
||||
|
||||
|
||||
List<PlateInfoVO> selectGoodsList(@Param("planIds") List<Long> planIds);
|
||||
}
|
||||
+29
-12
@@ -1,23 +1,20 @@
|
||||
package com.cf.imes.module.executor.service.optimizeplan;
|
||||
|
||||
import cn.hutool.Hutool;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.lang.Snowflake;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import co.elastic.clients.elasticsearch.ElasticsearchClient;
|
||||
import co.elastic.clients.elasticsearch._types.FieldValue;
|
||||
import co.elastic.clients.elasticsearch._types.query_dsl.Query;
|
||||
import co.elastic.clients.elasticsearch._types.query_dsl.TermQuery;
|
||||
import co.elastic.clients.elasticsearch._types.query_dsl.TermsQuery;
|
||||
import co.elastic.clients.elasticsearch.core.SearchRequest;
|
||||
import co.elastic.clients.elasticsearch.core.SearchResponse;
|
||||
import co.elastic.clients.elasticsearch.core.*;
|
||||
import co.elastic.clients.elasticsearch.core.search.Hit;
|
||||
import com.cf.imes.framework.common.exception.ServiceException;
|
||||
import com.cf.imes.framework.common.util.json.JsonUtils;
|
||||
import com.cf.imes.framework.es.core.dal.ESDocument;
|
||||
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.framework.mybatis.core.query.MPJLambdaWrapperX;
|
||||
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderSource;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.dto.Material;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.*;
|
||||
@@ -44,14 +41,23 @@ import com.cf.imes.module.infra.api.file.FileApi;
|
||||
import com.cf.imes.module.infra.api.file.dto.FileCreateReqDTO;
|
||||
import com.cf.imes.module.system.api.dataSource.DataSourceApi;
|
||||
import com.cf.imes.module.system.api.machine.MachineApi;
|
||||
import com.github.yulichang.interfaces.MPJBaseJoin;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import io.netty.handler.codec.http2.DefaultHttp2Headers;
|
||||
import io.netty.handler.codec.http2.DefaultHttp2HeadersDecoder;
|
||||
import io.netty.handler.codec.http2.DefaultHttp2HeadersEncoder;
|
||||
import io.netty.handler.codec.http2.Http2Headers;
|
||||
import io.swagger.v3.core.util.Json;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -61,6 +67,9 @@ import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.e
|
||||
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_NOT_EXISTS;
|
||||
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLAN_NOT_EXISTS;
|
||||
|
||||
import io.netty.handler.codec.http2.Http2HeadersEncoder;
|
||||
import io.netty.handler.codec.http2.Http2HeadersDecoder;
|
||||
|
||||
/**
|
||||
* @author there
|
||||
*/
|
||||
@@ -313,7 +322,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
List<PlateDetialRespVO> plateDOS = plateMapper.selectPlateDetialList(orderId);
|
||||
|
||||
List<OrderModelDO> orderModelDOS = buildRespByOrderId(orderId, ORDER_PLATE_MODEL);
|
||||
Integer size = plateDOS.size();
|
||||
|
||||
List<OrderModelDO> orderModelDOS = buildRespByOrderId(orderId, ORDER_PLATE_MODEL,size);
|
||||
|
||||
orderSource.setOptimizePlateDetialRespVO(optimizePlateDetialRespVO);
|
||||
orderSource.setPlan(planDO);
|
||||
@@ -349,7 +360,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
List<PlateDetialRespVO> plateDOS = plateMapper.selectPlateDetialListByIds(orderIds);
|
||||
|
||||
List<OrderModelDO> orderModelDOS = buildRespByOrderIds(orderIds, ORDER_PLATE_MODEL);
|
||||
Integer size = plateDOS.size();
|
||||
|
||||
List<OrderModelDO> orderModelDOS = buildRespByOrderIds(orderIds, ORDER_PLATE_MODEL,size);
|
||||
return OrderSource.builder()
|
||||
.optimizePlateDetialRespVO(optimizePlateDetialRespVOS)
|
||||
.orderList(orderDOS)
|
||||
@@ -360,10 +373,13 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
.build();
|
||||
}
|
||||
|
||||
private List<OrderModelDO> buildRespByOrderIds(Collection<Long> orderIds, String index) {
|
||||
|
||||
|
||||
private List<OrderModelDO> buildRespByOrderIds(Collection<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<OrderModelDO> search = elasticsearchClient.search(builder.build(), OrderModelDO.class);
|
||||
@@ -378,9 +394,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
}
|
||||
}
|
||||
|
||||
private List<OrderModelDO> buildRespByOrderId(Long orderId, String index) {
|
||||
private List<OrderModelDO> buildRespByOrderId(Long orderId, String index,Integer size) {
|
||||
SearchRequest.Builder builder = new SearchRequest.Builder();
|
||||
builder.index(index);
|
||||
builder.size(size);
|
||||
builder.query(q -> q.term(b -> b.field("orderId").value(orderId)));
|
||||
try {
|
||||
SearchResponse<OrderModelDO> search = elasticsearchClient.search(builder.build(), OrderModelDO.class);
|
||||
|
||||
+48
-19
@@ -91,12 +91,15 @@ public class PlanServiceImpl implements PlanService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long createPlan(PlanSaveReqVO createReqVO) {
|
||||
List<PlanSaveReqVO.Item> itemList = createReqVO.getItemList();
|
||||
// 插入
|
||||
long sort = System.currentTimeMillis();
|
||||
PlanDO plan = BeanUtils.toBean(createReqVO, PlanDO.class);
|
||||
plan.setIsPay(Boolean.FALSE);
|
||||
plan.setSort(sort);
|
||||
plan.setPlanNo(identifierGenerator.nextId(null).toString());
|
||||
String orderNos = itemList.stream().map(i -> i.getOrderId()).collect(Collectors.toList()).toString();
|
||||
plan.setOrderNos(orderNos);
|
||||
planMapper.insert(plan);
|
||||
Long planId = plan.getId();
|
||||
/* List<Long> orderIds = createReqVO.getOrderIds();
|
||||
@@ -111,12 +114,13 @@ public class PlanServiceImpl implements PlanService {
|
||||
planOrderMapper.insertBatch(planOrderDOS);
|
||||
}*/
|
||||
//List<Long> plateIds = createReqVO.getPlateIds();
|
||||
List<PlanSaveReqVO.Item> itemList = createReqVO.getItemList();
|
||||
Set<Long> plateIds = plateMapper.selectBatchOrderIdsAndGoodsIds(itemList);
|
||||
|
||||
if (CollectionUtil.isNotEmpty(plateIds)) {
|
||||
|
||||
Set<Long> itemIds = plateMapper.selectBatchOrderIdsAndGoodsIds(itemList);
|
||||
|
||||
if (CollectionUtil.isNotEmpty(itemIds)) {
|
||||
ArrayList<PlanItemDO> planItemDOS = new ArrayList<>();
|
||||
for (Long plateId : plateIds) {
|
||||
for (Long plateId : itemIds) {
|
||||
planItemDOS.add(PlanItemDO.builder()
|
||||
.planId(planId)
|
||||
.itemId(plateId)
|
||||
@@ -227,29 +231,54 @@ public class PlanServiceImpl implements PlanService {
|
||||
}
|
||||
Set<Long> macheineIds = planDOPageResult.getList().stream().map(PlanDO::getMachineId).collect(Collectors.toSet());
|
||||
List<CuttingRespDTO> machines = machineApi.list(macheineIds).getCheckedData();
|
||||
Set<Long> ids = planDOPageResult.getList().stream().map(PlanDO::getId).collect(Collectors.toSet());
|
||||
List<GoodsDO> goodsDOS = goodsMapper.selectList(new LambdaQueryWrapperX<GoodsDO>().in(GoodsDO::getOrderId, ids));
|
||||
List<PlateDO> plateDOS = plateMapper.selectList(new LambdaQueryWrapperX<PlateDO>().in(PlateDO::getGoodsId, goodsDOS.stream().map(GoodsDO::getGoodsId).collect(Collectors.toSet())));
|
||||
|
||||
|
||||
|
||||
List<Long> planIds = planDOPageResult.getList().stream().map(PlanDO::getId).collect(Collectors.toList());
|
||||
// // 根据排单ID查询排单明细表对应的明细ID
|
||||
// List<PlanItemDO> itemDOS = planItemMapper.selectList(new LambdaQueryWrapperX<PlanItemDO>().in(PlanItemDO::getPlanId, ids));
|
||||
//
|
||||
// List<GoodsDO> goodsDOS = goodsMapper.selectList(new LambdaQueryWrapperX<GoodsDO>().in(GoodsDO::getOrderId, ids));
|
||||
//
|
||||
// List<Long> longs = goodsDOS.stream().map(GoodsDO::getGoodsId).collect(Collectors.toList());
|
||||
//
|
||||
//
|
||||
// List<PlateDO> plateDOS = plateMapper.selectList(new LambdaQueryWrapperX<PlateDO>().in(PlateDO::getGoodsId,longs ));
|
||||
|
||||
List<PlateInfoVO> plateInfoVOS = planItemMapper.selectGoodsList(planIds);
|
||||
|
||||
|
||||
PageResult<PlanRespVO> planRespVOPageResult = BeanUtils.toBean(planDOPageResult, PlanRespVO.class);
|
||||
|
||||
// planRespVOPageResult.getList().forEach(e -> {
|
||||
// e.setMachineName(machines.stream()
|
||||
// .filter(f -> Objects.equals(f.getId(), e.getMachineId()))
|
||||
// .map(CuttingRespDTO::getName)
|
||||
// .findAny()
|
||||
// .orElse(null));
|
||||
// e.setPlateInfoList(goodsDOS.stream()
|
||||
// .filter(f -> Objects.equals(f.getOrderId(), e.getId()))
|
||||
// .map(p -> PlateInfoVO.builder()
|
||||
// .material(p.getMaterial())
|
||||
// .width(p.getWidth())
|
||||
// .height(p.getHeight())
|
||||
// .thickness(p.getThickness())
|
||||
// .color(p.getColor())
|
||||
// .area(p.getHeight().multiply(p.getWidth()).setScale(2, RoundingMode.HALF_UP))
|
||||
// .count(plateDOS.stream().filter(f -> Objects.equals(f.getGoodsId(), p.getGoodsId())).collect(Collectors.toSet()).size())
|
||||
// .build())
|
||||
// .collect(Collectors.toList()));
|
||||
// });
|
||||
|
||||
planRespVOPageResult.getList().forEach(e -> {
|
||||
e.setMachineName(machines.stream()
|
||||
.filter(f -> Objects.equals(f.getId(), e.getMachineId()))
|
||||
.map(CuttingRespDTO::getName)
|
||||
.findAny()
|
||||
.orElse(null));
|
||||
e.setPlateInfoList(goodsDOS.stream()
|
||||
.filter(f -> Objects.equals(f.getOrderId(), e.getId()))
|
||||
.map(p -> PlateInfoVO.builder()
|
||||
.material(p.getMaterial())
|
||||
.width(p.getWidth())
|
||||
.height(p.getHeight())
|
||||
.thickness(p.getThickness())
|
||||
.color(p.getColor())
|
||||
.area(p.getHeight().multiply(p.getWidth()).setScale(2, RoundingMode.HALF_UP))
|
||||
.count(plateDOS.stream().filter(f -> Objects.equals(f.getGoodsId(), p.getGoodsId())).collect(Collectors.toSet()).size())
|
||||
.build())
|
||||
.collect(Collectors.toList()));
|
||||
e.setPlateInfoList(plateInfoVOS);
|
||||
});
|
||||
|
||||
return planRespVOPageResult;
|
||||
}
|
||||
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.cf.imes.module.executor.dal.mysql.planitem.PlanItemMapper">
|
||||
|
||||
|
||||
|
||||
<resultMap id="GoodsListMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.PlateInfoVO">
|
||||
<result property="material" column="material"/>
|
||||
<result property="width" column="width"/>
|
||||
<result property="height" column="height"/>
|
||||
<result property="thickness" column="thickness"/>
|
||||
<result property="color" column="color"/>
|
||||
<result property="count" column="plateNum"/>
|
||||
<result property="area" column="area"/>
|
||||
|
||||
</resultMap>
|
||||
<select id="selectGoodsList" resultMap="GoodsListMap">
|
||||
|
||||
|
||||
select og.material as material,
|
||||
og.width as width,
|
||||
og.height as height,
|
||||
og.thickness as thickness ,
|
||||
og.color as color,
|
||||
count(oi.plate_id) as plateNum,
|
||||
ROUND(og.height * og.width , 2) as area
|
||||
from order_plan_item opi
|
||||
join order_item oi on opi.item_id = oi.id
|
||||
join order_goods og on oi.order_id = og.order_id
|
||||
|
||||
where opi.plan_id in
|
||||
<foreach collection="planIds" item="ids" open="(" close=")" separator=",">
|
||||
#{ids}
|
||||
</foreach>
|
||||
|
||||
group by material,width,height,thickness,color;
|
||||
|
||||
</select>
|
||||
</mapper>
|
||||
+3
-2
@@ -78,8 +78,9 @@
|
||||
</select>
|
||||
|
||||
<select id="selectBatchOrderIdsAndGoodsIds" resultType="java.lang.Long">
|
||||
select id from order_plate
|
||||
where ( order_id, goods_id ) in
|
||||
select oi.id from order_plate op
|
||||
join order_item oi on op.id = oi.plate_id
|
||||
where ( op.order_id, op.goods_id ) in
|
||||
<foreach collection="itemList" item="item" open="(" close=")" separator=",">
|
||||
(#{item.orderId},#{item.goodsId})
|
||||
</foreach>
|
||||
|
||||
Reference in New Issue
Block a user