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

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