贴皮管理查询对于已排贴皮的限制和过滤

This commit is contained in:
gaoqr
2026-07-22 16:16:34 +08:00
parent 82fbc4ea41
commit 0c062e4d37
6 changed files with 38 additions and 31 deletions
@@ -39,7 +39,7 @@ public class VeneerManageController {
private VeneerManageService veneerManageService;
/**
* 分页查询存在已分解贴皮板件的订单。
* 分页查询存在可维护未排单贴皮的订单。
*
* @param req 分页及筛选条件
* @return 订单分页列表
@@ -53,7 +53,7 @@ public class VeneerManageController {
}
/**
* 分页查询存在已分解贴皮板件的板材。
* 分页查询存在可维护未排单贴皮的板材。
*
* @param req 分页及筛选条件
* @return 板材分页列表
@@ -67,13 +67,13 @@ public class VeneerManageController {
}
/**
* 按订单查询已分解板件贴皮列表。
* 按订单查询可维护的未排单板件贴皮列表。
*
* @param req 查询条件,必须包含订单ID列表,可按房间和柜体筛选
* @return 已分解板件贴皮列表
* @return 未排单板件贴皮列表
*/
@PostMapping("/order/plate/list")
@Operation(summary = "按订单获取已分解板件贴皮列表")
@Operation(summary = "按订单获取可维护的未排单板件贴皮列表")
@PreAuthorize("@ss.hasPermission('unplannedOrders:query')")
public CommonResult<List<VeneerManagePlateRespVO>> getVeneerManageOrderPlateList(
@Valid @RequestBody VeneerManagePlateListReqVO req) {
@@ -81,13 +81,13 @@ public class VeneerManageController {
}
/**
* 按板材查询已分解板件贴皮列表。
* 按板材查询可维护的未排单板件贴皮列表。
*
* @param req 查询条件,必须包含板材商品编码列表
* @return 已分解板件贴皮列表
* @return 未排单板件贴皮列表
*/
@PostMapping("/goods/plate/list")
@Operation(summary = "按板材获取已分解板件贴皮列表")
@Operation(summary = "按板材获取可维护的未排单板件贴皮列表")
@PreAuthorize("@ss.hasPermission('unplannedOrders:query')")
public CommonResult<List<VeneerManagePlateRespVO>> getVeneerManageGoodsPlateList(
@Valid @RequestBody VeneerManagePlateListReqVO req) {
@@ -95,7 +95,7 @@ public class VeneerManageController {
}
/**
* 批量为已分解板件贴皮重新选择贴皮库数据。
* 批量为未排单板件贴皮重新选择贴皮库数据。
*
* @param req 板件贴皮记录ID及新贴皮库ID
* @return 是否成功
@@ -6,7 +6,7 @@ import lombok.Data;
import java.math.BigDecimal;
/**
* 已分解板件贴皮响应参数。
* 可维护未排单板件贴皮响应参数。
*/
@Data
public class VeneerManagePlateRespVO {
@@ -32,7 +32,7 @@ public class VeneerManagePlateRespVO {
@Schema(description = "原板件厚(mm)")
private BigDecimal thickness;
@Schema(description = "贴皮排单ID0表示未排单")
@Schema(description = "贴皮排单ID贴皮管理列表中固定为0")
private Long planId;
@Schema(description = "贴皮商品号")
@@ -23,7 +23,7 @@ import java.util.List;
public interface VeneerManageMapper {
/**
* 分页查询存在已分解贴皮板件的根订单 ID。
* 分页查询存在可维护未排单贴皮的根订单 ID。
*
* @param page 分页参数
* @param req 订单查询条件
@@ -45,7 +45,7 @@ public interface VeneerManageMapper {
@Param("rootIds") List<Long> rootIds);
/**
* 查询当前页根订单下存在已分解贴皮板件的子订单。
* 查询当前页根订单下存在可维护未排单贴皮的子订单。
*
* @param rootIds 根订单ID列表
* @param req 订单查询条件
@@ -58,7 +58,7 @@ public interface VeneerManageMapper {
@Param("orderDateTime") LocalDateTime[] orderDateTime);
/**
* 分页查询存在已分解贴皮板件的板材。
* 分页查询存在可维护未排单贴皮的板材。
*
* @param page 分页参数
* @param req 板材查询条件
@@ -105,18 +105,18 @@ public interface VeneerManageMapper {
@Param("req") VeneerManageGoodsPageReqVO req);
/**
* 按订单查询已分解板件贴皮列表。
* 按订单查询可维护的未排单板件贴皮列表。
*
* @param req 订单、房间及柜体查询条件
* @return 已分解板件贴皮列表
* @return 未排单板件贴皮列表
*/
List<VeneerManagePlateRespVO> selectOrderPlateList(@Param("req") VeneerManagePlateListReqVO req);
/**
* 按板材商品编码查询已分解板件贴皮列表。
* 按板材商品编码查询可维护的未排单板件贴皮列表。
*
* @param goodsIds 板材商品编码列表
* @return 已分解板件贴皮列表
* @return 未排单板件贴皮列表
*/
List<VeneerManagePlateRespVO> selectGoodsPlateList(@Param("goodsIds") List<String> goodsIds);
@@ -20,7 +20,7 @@ import java.util.List;
public interface VeneerManageService {
/**
* 分页查询存在已分解贴皮板件的订单。
* 分页查询存在可维护未排单贴皮的订单。
*
* @param req 订单查询条件
* @return 订单分页结果
@@ -28,7 +28,7 @@ public interface VeneerManageService {
PageResult<VeneerManageOrderRespVO> getOrderPage(VeneerManageOrderPageReqVO req);
/**
* 分页查询存在已分解贴皮板件的板材。
* 分页查询存在可维护未排单贴皮的板材。
*
* @param req 板材查询条件
* @return 板材分页结果
@@ -52,18 +52,18 @@ public interface VeneerManageService {
PageResult<VeneerManageGoodsRespVO> getUnplannedGoodsPage(VeneerManageGoodsPageReqVO req);
/**
* 按订单查询已分解板件贴皮列表。
* 按订单查询可维护的未排单板件贴皮列表。
*
* @param req 查询条件,必须包含订单ID列表,可按房间和柜体筛选
* @return 已分解板件贴皮列表
* @return 未排单板件贴皮列表
*/
List<VeneerManagePlateRespVO> getOrderPlateList(VeneerManagePlateListReqVO req);
/**
* 按板材查询已分解板件贴皮列表。
* 按板材查询可维护的未排单板件贴皮列表。
*
* @param req 查询条件,必须包含板材商品编码列表
* @return 已分解板件贴皮列表
* @return 未排单板件贴皮列表
*/
List<VeneerManagePlateRespVO> getGoodsPlateList(VeneerManagePlateListReqVO req);
@@ -76,7 +76,7 @@ public interface VeneerManageService {
UnplannedVeneerPlateDataRespVO getUnplannedPlateData(UnplannedVeneerPlateDataReqVO req);
/**
* 批量为已分解板件贴皮重新选择贴皮库数据。
* 批量为未排单板件贴皮重新选择贴皮库数据。
*
* @param req 板件贴皮记录ID及新贴皮库ID
*/
@@ -296,7 +296,7 @@ public class VeneerManageServiceImpl implements VeneerManageService {
}
/**
* 批量重选贴皮,仅替换所选 A/B 面记录的贴皮库关联及贴皮属性快照。
* 批量重选未排单贴皮,仅替换所选 A/B 面记录的贴皮库关联及贴皮属性快照。
*
* @param req 批量重选贴皮参数
*/
@@ -326,18 +326,20 @@ public class VeneerManageServiceImpl implements VeneerManageService {
}
for (List<Long> idBatch : CollUtil.split(ids, RESELECT_BATCH_SIZE)) {
// 查询本批有效记录,提前校验所选数据是否已删除或发生变化
// 查询未排单记录;已删除、已排单或状态发生变化时统一按并发冲突处理
List<OrderPlateVeneerDO> records = orderPlateVeneerMapper.selectList(
new LambdaQueryWrapper<OrderPlateVeneerDO>()
.select(OrderPlateVeneerDO::getId)
.eq(OrderPlateVeneerDO::getPlanId, 0L)
.in(OrderPlateVeneerDO::getId, idBatch));
if (records.size() != idBatch.size()) {
throw new ServiceException(VENEER_RESELECT_RECORD_STATUS_CHANGED);
}
// 生成贴皮编号及原板信息保持不变,只替换贴皮库关联和五个展示快照字段
// 更新时再次限制未排单状态,避免查询后被其他用户排单仍可重选贴皮
int updated = orderPlateVeneerMapper.update(
new LambdaUpdateWrapper<OrderPlateVeneerDO>()
.eq(OrderPlateVeneerDO::getPlanId, 0L)
.in(OrderPlateVeneerDO::getId, idBatch)
.set(OrderPlateVeneerDO::getSourceVeneerId, veneer.getId())
.set(OrderPlateVeneerDO::getSourceVeneerNo, veneer.getVeneerNo())
@@ -56,7 +56,8 @@
SELECT o.root_id
FROM orders o
WHERE o.deleted = false
AND IFNULL(o.decomposed_veneer_plate_num, 0) &gt; 0
AND IFNULL(o.decomposed_veneer_plate_num, 0)
&gt; IFNULL(o.planned_veneer_plate_num, 0)
<if test="req.orderId != null and req.orderId != ''">
AND CAST(o.id AS CHAR) LIKE CONCAT('%', #{req.orderId}, '%')
</if>
@@ -110,7 +111,8 @@
o.area AS area
FROM orders o
WHERE o.deleted = false
AND IFNULL(o.decomposed_veneer_plate_num, 0) &gt; 0
AND IFNULL(o.decomposed_veneer_plate_num, 0)
&gt; IFNULL(o.planned_veneer_plate_num, 0)
AND o.parent_id IN
<foreach collection="rootIds" item="id" open="(" close=")" separator=",">
#{id}
@@ -149,7 +151,8 @@
WHERE o.deleted = false
AND o.status IN (1, 2, 3)
AND og.deleted = false
AND IFNULL(og.decomposed_veneer_plate_num, 0) &gt; 0
AND IFNULL(og.decomposed_veneer_plate_num, 0)
&gt; IFNULL(og.planned_veneer_plate_num, 0)
<if test="req.goodsName != null and req.goodsName != ''">
AND og.goods_name LIKE CONCAT('%', #{req.goodsName}, '%')
</if>
@@ -310,6 +313,7 @@
<include refid="PlateVeneerColumns"/>
FROM order_plate_veneer opv
WHERE opv.deleted = false
AND opv.plan_id = 0
AND opv.order_id IN
<foreach collection="req.orderIds" item="orderId" open="(" close=")" separator=",">
#{orderId}
@@ -346,6 +350,7 @@
JOIN order_goods og ON og.order_id = opv.order_id
AND og.id = opv.order_goods_id
WHERE opv.deleted = false
AND opv.plan_id = 0
AND og.deleted = false
AND og.goods_id IN
<foreach collection="goodsIds" item="goodsId" open="(" close=")" separator=",">