获取数据源增加配件的备注信息,配件信息增加类型等信息

This commit is contained in:
liuzhaotian
2024-09-25 10:34:48 +08:00
parent 93adc1a065
commit e4f71a9fb7
12 changed files with 198 additions and 111 deletions
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.controller.admin.plan.bo; package com.cf.imes.module.executor.controller.admin.plan.bo;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRemark;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.OptimizeRemainPlate; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.OptimizeRemainPlate;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPackReqVO; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPackReqVO;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPartsRespVO; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPartsRespVO;
@@ -16,8 +17,6 @@ import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
/** /**
@@ -61,6 +60,11 @@ public class OrderSource {
private List<PrintOrderPartsRespVO> orderPartsRespVOS; private List<PrintOrderPartsRespVO> orderPartsRespVOS;
@Schema(description = "生产单配件的备注信息")
private List<OrderPartsRemark> orderPartsRemarks;
@Schema(description = "生产单包裹信息") @Schema(description = "生产单包裹信息")
private List<PrintOrderPackReqVO> orderPackReqVOS; private List<PrintOrderPackReqVO> orderPackReqVOS;
@@ -1,25 +1,37 @@
package com.cf.imes.module.executor.controller.admin.plan.saveOptimize; package com.cf.imes.module.executor.controller.admin.plan.saveOptimize;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.util.List;
@Schema(description = "管理后台 - 标签对应的生产单配件信息") @Schema(description = "管理后台 - 标签对应的生产单配件信息")
@Data @Data
public class PrintOrderPartsRespVO { public class PrintOrderPartsRespVO {
@Schema(description = "房间ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long roomId;
@Schema(description = "房间名称", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "房间名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String roomName; private String roomName;
@Schema(description = "柜体ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long bodyId;
@Schema(description = "柜体名称", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "柜体名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String bodyName; private String bodyName;
@Schema(description = "加工组ID", requiredMode = Schema.RequiredMode.REQUIRED)
private List<Long> groupId;
@Schema(description = "配件 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "29347") @Schema(description = "配件 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "29347")
@ExcelProperty("配件 ID")
private Long id; private Long id;
@@ -27,6 +39,7 @@ public class PrintOrderPartsRespVO {
private Long orderId; private Long orderId;
@Schema(description = "配件数量", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "配件数量", requiredMode = Schema.RequiredMode.REQUIRED)
private Long partsNum; private Long partsNum;
@@ -51,4 +64,8 @@ public class PrintOrderPartsRespVO {
private String factory; private String factory;
@Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED)
private String type;
} }
@@ -42,6 +42,8 @@ public class OrderGoodsResp {
@Schema(description = "板件数量") @Schema(description = "板件数量")
private int num; private int num;
@Schema(description = "备注")
private String remark;
@Schema(description = "生产单信息") @Schema(description = "生产单信息")
private List<OrderRespVOCopy> orderList; private List<OrderRespVOCopy> orderList;
@@ -19,6 +19,10 @@ public interface OptimizePlanService {
String ORDER_REMAIN_PLATE_MODEL = "imes_order_optimize_plate_model"; String ORDER_REMAIN_PLATE_MODEL = "imes_order_optimize_plate_model";
String ORDER_PARTS_REMARK_MODEL = "imes_order_parts_remark_model";
List<PlateOptimize> getPlateListByPlanId(Long planId); List<PlateOptimize> getPlateListByPlanId(Long planId);
Boolean addRemain(AddRemainReqVO vo); Boolean addRemain(AddRemainReqVO vo);
@@ -16,6 +16,7 @@ import com.cf.imes.framework.common.util.Assert.AssertUtils;
import com.cf.imes.framework.common.util.object.BeanUtils; 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.security.core.LoginUser; import com.cf.imes.framework.security.core.LoginUser;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRemark;
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderSource; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderSource;
import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessGroupList; import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessGroupList;
import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessStepAreaIds; import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessStepAreaIds;
@@ -607,6 +608,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// 查询生产单对应的配件信息 // 查询生产单对应的配件信息
List<PrintOrderPartsRespVO> printOrderPartsRespVOS = orderPartsMapper.selectPartList(orderIds, getUserOrganId()); List<PrintOrderPartsRespVO> printOrderPartsRespVOS = orderPartsMapper.selectPartList(orderIds, getUserOrganId());
// 查询生产单对应的配件的ES信息
List<OrderPartsRemark> orderPartsRemarks = buildOrderPartsByOrderId(orderIds, ORDER_PARTS_REMARK_MODEL, printOrderPartsRespVOS.size());
// 查询生产单对应的包裹信息 // 查询生产单对应的包裹信息
List<PrintOrderPackReqVO> printOrderPackReqVOS = plateMapper.selectPlanPackList(ids,getUserOrganId()); List<PrintOrderPackReqVO> printOrderPackReqVOS = plateMapper.selectPlanPackList(ids,getUserOrganId());
@@ -631,6 +635,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
.optimizeBoardModelDOS(optimizeBoardModelDOS) .optimizeBoardModelDOS(optimizeBoardModelDOS)
.optimizeRemainPlates(optimizeRemainPlates) .optimizeRemainPlates(optimizeRemainPlates)
.orderPartsRespVOS(printOrderPartsRespVOS) .orderPartsRespVOS(printOrderPartsRespVOS)
.orderPartsRemarks(orderPartsRemarks)
.orderPackReqVOS(printOrderPackReqVOS) .orderPackReqVOS(printOrderPackReqVOS)
.build(); .build();
} }
@@ -943,6 +948,30 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
} }
public 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 (CollectionUtil.isNotEmpty(hits)) {
return hits.stream().map(Hit::source).collect(Collectors.toList());
}
return new ArrayList<>();
} catch (IOException e) {
log.error(e.getMessage());
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
}
public void deleteByPlanId(List<Long> planIds, String index) { public void deleteByPlanId(List<Long> planIds, String index) {
List<FieldValue> fieldValues = planIds.stream().map(FieldValue::of).toList(); List<FieldValue> fieldValues = planIds.stream().map(FieldValue::of).toList();
@@ -274,6 +274,8 @@ public class OrderServiceImpl implements OrderService {
if (bodyIds.size() != 0){ if (bodyIds.size() != 0){
List<PlateDO> plateDOList = plateMapper.selectPlateTypeByRoomId(orderId, bodyIds, getUserOrganId(), index); List<PlateDO> plateDOList = plateMapper.selectPlateTypeByRoomId(orderId, bodyIds, getUserOrganId(), index);
List<Long> plateIds = plateDOList.stream().map(PlateDO::getId).toList(); List<Long> plateIds = plateDOList.stream().map(PlateDO::getId).toList();
List<Long> goodsIds = plateDOList.stream().map(PlateDO::getGoodsId).distinct().toList(); List<Long> goodsIds = plateDOList.stream().map(PlateDO::getGoodsId).distinct().toList();
@@ -284,8 +286,6 @@ public class OrderServiceImpl implements OrderService {
if (!plateDOList.isEmpty()) { if (!plateDOList.isEmpty()) {
plateMapper.updateDeletedById(plateIds, status, getUserOrganId(), orderId);// 删小板 plateMapper.updateDeletedById(plateIds, status, getUserOrganId(), orderId);// 删小板
}
// 删除包裹,只需删除,无需还原 // 删除包裹,只需删除,无需还原
List<Long> packIds = orderItemMapper.selectPackId(bodyIds, getUserOrganId()).stream().map(OrderItemDO::getPackageId).distinct().toList(); List<Long> packIds = orderItemMapper.selectPackId(bodyIds, getUserOrganId()).stream().map(OrderItemDO::getPackageId).distinct().toList();
@@ -294,11 +294,11 @@ public class OrderServiceImpl implements OrderService {
orderItemMapper.deletePackList(orderId, packIds, getUserOrganId()); orderItemMapper.deletePackList(orderId, packIds, getUserOrganId());
orderPrepackagedMapper.deletePacked(orderId,getUserOrganId()); orderPrepackagedMapper.deletePacked(orderId, getUserOrganId());
List<OrderPackageDO> orderPackageDOS = orderPackageMapper.selectPackStatusList(orderId, getUserOrganId()); List<OrderPackageDO> orderPackageDOS = orderPackageMapper.selectPackStatusList(orderId, getUserOrganId());
if(orderPackageDOS.isEmpty()){ if (orderPackageDOS.isEmpty()) {
OrderDO orderDO = orderMapper.selectById(orderId); OrderDO orderDO = orderMapper.selectById(orderId);
@@ -326,21 +326,20 @@ public class OrderServiceImpl implements OrderService {
} }
if(!planIds.isEmpty()) { if (!planIds.isEmpty()) {
// 判断删除的柜体对应的板材是否和排单板材一样 // 判断删除的柜体对应的板材是否和排单板材一样
List<GoodsDO> goodsDOS = goodsMapper.selectPlanGoodsListByPlanIdList(planIds, getUserOrganId()); List<GoodsDO> goodsDOS = goodsMapper.selectPlanGoodsListByPlanIdList(planIds, getUserOrganId());
// 一样,同时删除排单的信息 // 一样,同时删除排单的信息
if(goodsDOS.isEmpty() && status.equals(1)){ if (goodsDOS.isEmpty()) {
planService.deletePlan(planIds); planService.deletePlan(planIds);
} } else {
// 只要有排单,不管删除的柜体的板材数和排单数一样,都要删除排单对应的优化数据(不用这种写法进行删除时,有时会报错,原因目前还没找到) // 只要有排单,不管删除的柜体的板材数和排单数一样,都要删除排单对应的优化数据(不用这种写法进行删除时,有时会报错,原因目前还没找到)
planService.deleteByPlanId(planIds, ORDER_REMAIN_PLATE_MODEL); planService.deleteByPlanId(planIds, ORDER_REMAIN_PLATE_MODEL);
} }
}
}
List<Long> partsList = orderPartsMapper.selectPartsIdListByBodyId(bodyIds, getUserOrganId(), orderId); // 配件 List<Long> partsList = orderPartsMapper.selectPartsIdListByBodyId(bodyIds, getUserOrganId(), orderId); // 配件
if (partsList != null && partsList.size() != 0){ if (partsList != null && partsList.size() != 0){
orderPartsMapper.updateDeletedById(partsList, status, getUserOrganId()); orderPartsMapper.updateDeletedById(partsList, status, getUserOrganId());
@@ -391,11 +390,11 @@ public class OrderServiceImpl implements OrderService {
// 小板还原 // 小板还原
if (!plateDOList.isEmpty()) { if (!plateDOList.isEmpty()) {
plateMapper.updateDeletedById(plateIds, status, getUserOrganId(), orderId); plateMapper.updateDeletedById(plateIds, status, getUserOrganId(), orderId);
}
// 还原大板 // 还原大板
List<GoodsDO> goodsDOS = goodsMapper.selectGoodsListByStatus(orderId, goodsIds, getUserOrganId()); List<GoodsDO> goodsDOS = goodsMapper.selectGoodsListByStatus(orderId, goodsIds, getUserOrganId());
if(!goodsDOS.isEmpty()){ if (!goodsDOS.isEmpty()) {
goodsMapper.updateBatch(goodsDOS.stream().map(m -> m.setDeleted(false)).toList()); goodsMapper.updateBatch(goodsDOS.stream().map(m -> m.setDeleted(false)).toList());
} }
@@ -405,7 +404,7 @@ public class OrderServiceImpl implements OrderService {
List<GoodsDO> goodsList = BeanUtils.toBean(goodsDOList, GoodsDO.class); List<GoodsDO> goodsList = BeanUtils.toBean(goodsDOList, GoodsDO.class);
if(!goodsDOList.isEmpty()){ if (!goodsDOList.isEmpty()) {
// 新增的大板信息 // 新增的大板信息
List<GoodsDO> list = goodsDOList.stream() List<GoodsDO> list = goodsDOList.stream()
@@ -440,8 +439,8 @@ public class OrderServiceImpl implements OrderService {
for (OrderGoodsIds ids : orderGoodsIdsList) { for (OrderGoodsIds ids : orderGoodsIdsList) {
plateList.addAll(plateDOS.stream() plateList.addAll(plateDOS.stream()
.filter(f->f.getGoodsId().equals(ids.getOldId())) .filter(f -> f.getGoodsId().equals(ids.getOldId()))
.peek(m->{ .peek(m -> {
m.setGoodsId(ids.getId()); m.setGoodsId(ids.getId());
}) })
.toList()); .toList());
@@ -450,7 +449,7 @@ public class OrderServiceImpl implements OrderService {
plateMapper.updateBatch(plateList); plateMapper.updateBatch(plateList);
} }
}
List<Long> partsList = orderPartsMapper.selectPartsIdListByBodyId(bodyIds, getUserOrganId(), orderId); // 配件 List<Long> partsList = orderPartsMapper.selectPartsIdListByBodyId(bodyIds, getUserOrganId(), orderId); // 配件
if (partsList != null && partsList.size() != 0){ if (partsList != null && partsList.size() != 0){
@@ -631,7 +631,7 @@ public class PlanServiceImpl implements PlanService {
.in("order_id",orderIds) .in("order_id",orderIds)
.eq("is_optimized",false) .eq("is_optimized",false)
.inIfPresent("goods_id",goodsIds) .inIfPresent("goods_id",goodsIds)
.inIfPresent("id",pageReqVO.getIds()) .inIfPresent("goods_id",pageReqVO.getIds())
.eqIfPresent("is_special_shaped", pageReqVO.getRectangle() != null ? false: null) .eqIfPresent("is_special_shaped", pageReqVO.getRectangle() != null ? false: null)
.eqIfPresent("is_special_shaped", pageReqVO.getSpecialShaped()) .eqIfPresent("is_special_shaped", pageReqVO.getSpecialShaped())
.eqIfPresent("is_sculpt", pageReqVO.getSculpt()) .eqIfPresent("is_sculpt", pageReqVO.getSculpt())
@@ -45,7 +45,7 @@
from orders o from orders o
join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id and og.plan_id = 0 and o.deleted = og.deleted join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id and og.plan_id = 0 and o.deleted = og.deleted
join order_plate op on o.organ_id = op.organ_id and o.deleted = op.deleted and o.id = op.order_id and op.is_optimized = false join order_plate op on o.organ_id = op.organ_id and o.deleted = op.deleted and o.id = op.order_id and op.is_optimized = false and og.id = op.goods_id
${ew.customSqlSegment} ${ew.customSqlSegment}
@@ -219,6 +219,7 @@
<result property="texture" column="texture"/> <result property="texture" column="texture"/>
<result property="brand" column="brand"/> <result property="brand" column="brand"/>
<result property="spec" column="spec"/> <result property="spec" column="spec"/>
<result property="remark" column="remark"/>
<result property="goodsId" column="goodsId"/> <result property="goodsId" column="goodsId"/>
<collection property="orderIds" ofType="com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds" resultMap="OrderIdMap"/> <collection property="orderIds" ofType="com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds" resultMap="OrderIdMap"/>
@@ -251,13 +252,14 @@
og.width, og.width,
og.height, og.height,
og.brand, og.brand,
og.remark,
og.spec og.spec
from orders o from orders o
join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id and og.plan_id = 0 and o.deleted = og.deleted join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id and og.plan_id = 0 and o.deleted = og.deleted
join order_plate op on o.organ_id = op.organ_id and o.deleted = op.deleted and o.id = op.order_id and op.is_optimized = false join order_plate op on o.organ_id = op.organ_id and o.deleted = op.deleted and o.id = op.order_id and op.is_optimized = false and og.id = op.goods_id
${ew.customSqlSegment} ${ew.customSqlSegment}
@@ -87,19 +87,47 @@
AND organ_id = #{organId} AND organ_id = #{organId}
</delete> </delete>
<select id="selectPartList" <resultMap id="OrderPartsMap" type="com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPartsRespVO">
resultType="com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPartsRespVO">
select distinct oi.num as partsNum, <result property="partsNum" column="partsNum"/>
<result property="bodyId" column="bodyId"/>
<result property="roomId" column="roomId"/>
<result property="bodyName" column="bodyName"/>
<result property="roomName" column="roomName"/>
<result property="id" column="id"/>
<result property="spec" column="spec"/>
<result property="brand" column="brand"/>
<result property="factory" column="factory"/>
<result property="model" column="model"/>
<result property="name" column="name"/>
<result property="orderId" column="orderId"/>
<result property="type" column="type"/>
<collection property="groupId" ofType="java.lang.Long" column="groupId"/>
</resultMap>
<select id="selectPartList"
parameterType="java.lang.Long"
resultMap="OrderPartsMap">
select distinct oi.group_id as groupId,
oi.num as partsNum,
oi.body_id as bodyId,
oi.room_id as roomId,
ob.name as bodyName, ob.name as bodyName,
ob.room_name as roomName, ob.room_name as roomName,
op.id, op.id as id,
op.spec, op.spec as spec,
op.brand, op.brand as brand,
op.factory, op.factory as factory,
op.model, op.model as model ,
op.name, op.name as name,
op.order_id op.order_id as orderId,
op.type as type
from order_parts op from order_parts op
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.parts_id left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.parts_id
left join order_body ob on oi.organ_id = ob.organ_id and oi.order_id = ob.order_id and oi.body_id = ob.id left join order_body ob on oi.organ_id = ob.organ_id and oi.order_id = ob.order_id and oi.body_id = ob.id
@@ -105,8 +105,8 @@ public interface OrderPackageMapper extends BaseMapperX<OrderPackageDO> {
return selectList(new LambdaQueryWrapperX<OrderPackageDO>() return selectList(new LambdaQueryWrapperX<OrderPackageDO>()
.eq(OrderPackageDO::getOrganId,organId) .eq(OrderPackageDO::getOrganId,organId)
.eq(OrderPackageDO::getDeleted,false) .eq(OrderPackageDO::getDeleted,false)
.eq(OrderPackageDO::getStatus,OrderPackageStatusEnum.PACKAGED.getStatus()) .eqIfPresent(OrderPackageDO::getOrderId, orderId)
.eqIfPresent(OrderPackageDO::getOrderId, orderId)); .eq(OrderPackageDO::getStatus,OrderPackageStatusEnum.PACKAGED.getStatus()));
} }
} }
@@ -62,6 +62,7 @@
</foreach> </foreach>
and op.type = 0 and op.type = 0
and op.status in (1,2,3)
and oi.package_id != 0 and oi.package_id != 0
and oi.plate_id != 0; and oi.plate_id != 0;
@@ -298,6 +298,7 @@ public interface ErrorCodeConstants {
ErrorCode ORDER_PLAN_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_002_041_009, "当前排单对应的板材造型数据为空,请检查板材信息或者联系客服"); ErrorCode ORDER_PLAN_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_002_041_009, "当前排单对应的板材造型数据为空,请检查板材信息或者联系客服");
ErrorCode ORDER_GOODS_DATA_ERROR = new ErrorCode(1_002_041_010, "当前大板数据异常,请检查大板信息或者联系客服"); ErrorCode ORDER_GOODS_DATA_ERROR = new ErrorCode(1_002_041_010, "当前大板数据异常,请检查大板信息或者联系客服");
ErrorCode ORDER_PACK_DATA_ERROR = new ErrorCode(1_002_041_011, "当前包裹数据为空,请重新查看包裹数据或联系客服"); ErrorCode ORDER_PACK_DATA_ERROR = new ErrorCode(1_002_041_011, "当前包裹数据为空,请重新查看包裹数据或联系客服");
ErrorCode ORDER_BODY_DATA_ERROR = new ErrorCode(1_002_041_012, "当前柜体对应的板材数据为空,无法删除");