feat:WMS 模块 「库存查询」-「即时库存」
1. 完成即时库存列表接口改造:JSON 返回每个对象中补充规格型号与库存数量合计字段。
2. 支持前端基于规格型号进行即时库存的组合条件查询
This commit is contained in:
+6
@@ -71,6 +71,12 @@ public interface IMaterialInventoryService extends IService<MaterialInventory>
|
|||||||
*/
|
*/
|
||||||
public List<ImmediateInventoryPO> queryImmediateInventoryList(ImmediateInventoryDO immediateInventoryDO);
|
public List<ImmediateInventoryPO> queryImmediateInventoryList(ImmediateInventoryDO immediateInventoryDO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询即时库存合计数量
|
||||||
|
*/
|
||||||
|
public BigDecimal sumImmediateInventoryQuantity(ImmediateInventoryDO immediateInventoryDO);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 增加指定库存
|
* @description 增加指定库存
|
||||||
* @author ZhouGY
|
* @author ZhouGY
|
||||||
|
|||||||
+6
@@ -91,6 +91,12 @@ public interface MaterialInventoryMapper extends BaseMapper<MaterialInventory>
|
|||||||
*/
|
*/
|
||||||
public List<ImmediateInventoryPO> queryImmediateInventoryList(ImmediateInventoryDO immediateInventoryDO);
|
public List<ImmediateInventoryPO> queryImmediateInventoryList(ImmediateInventoryDO immediateInventoryDO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询即时库存合计数量(与列表相同筛选条件,返回库存数量总和)
|
||||||
|
*/
|
||||||
|
public BigDecimal sumImmediateInventoryQuantity(ImmediateInventoryDO immediateInventoryDO);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Select("SELECT SUM(inventory_quantity) FROM material_inventory a LEFT JOIN material_base_info b ON a.material_base_info_id = b.material_base_info_id WHERE a.del_flag = 1 AND b.shipper_id = #{shipperId} AND b.material_base_info_id = #{materialBaseInfoId}")
|
@Select("SELECT SUM(inventory_quantity) FROM material_inventory a LEFT JOIN material_base_info b ON a.material_base_info_id = b.material_base_info_id WHERE a.del_flag = 1 AND b.shipper_id = #{shipperId} AND b.material_base_info_id = #{materialBaseInfoId}")
|
||||||
public BigDecimal sumInventoryQuantityByShipperAndMaterialCode(@Param("shipperId") Long shipperId, @Param("materialBaseInfoId") Long materialBaseInfoId);
|
public BigDecimal sumInventoryQuantityByShipperAndMaterialCode(@Param("shipperId") Long shipperId, @Param("materialBaseInfoId") Long materialBaseInfoId);
|
||||||
|
|||||||
+18
@@ -464,11 +464,29 @@ public class MaterialInventoryImpl extends ServiceImpl<MaterialInventoryMapper,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询即时库存列表
|
||||||
|
*
|
||||||
|
* @param immediateInventoryDO 即时库存查询条件(含组织权限、货主、物料、仓库、数量区间等筛选条件)
|
||||||
|
* @return 即时库存列表
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<ImmediateInventoryPO> queryImmediateInventoryList(ImmediateInventoryDO immediateInventoryDO) {
|
public List<ImmediateInventoryPO> queryImmediateInventoryList(ImmediateInventoryDO immediateInventoryDO) {
|
||||||
return materialInventoryMapper.queryImmediateInventoryList(immediateInventoryDO);
|
return materialInventoryMapper.queryImmediateInventoryList(immediateInventoryDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询即时库存合计数量
|
||||||
|
* <p>与列表查询使用相同筛选条件但不分页,统计筛选条件下所有库存数量之和</p>
|
||||||
|
*
|
||||||
|
* @param immediateInventoryDO 即时库存查询条件(与列表查询保持一致,保证合计口径一致)
|
||||||
|
* @return 库存数量合计值,无数据时为 0
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public BigDecimal sumImmediateInventoryQuantity(ImmediateInventoryDO immediateInventoryDO) {
|
||||||
|
return materialInventoryMapper.sumImmediateInventoryQuantity(immediateInventoryDO);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 增加指定库存
|
* @description 增加指定库存
|
||||||
* @author ZhouGY
|
* @author ZhouGY
|
||||||
|
|||||||
+14
@@ -103,6 +103,20 @@ public class MaterialInventoryDomainService {
|
|||||||
return materialInventoryService.queryImmediateInventoryList(immediateInventoryDO);
|
return materialInventoryService.queryImmediateInventoryList(immediateInventoryDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询即时库存合计数量
|
||||||
|
*/
|
||||||
|
public BigDecimal sumImmediateInventoryQuantity(ImmediateInventoryDO immediateInventoryDO) {
|
||||||
|
return materialInventoryService.sumImmediateInventoryQuantity(immediateInventoryDO);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据查询条件获取物料库存信息
|
||||||
|
* <p>按货主、组织、物料、仓库、库位等条件查询,返回汇总后的库存信息(含库存数量合计)</p>
|
||||||
|
*
|
||||||
|
* @param materialInventoryDO 物料库存查询条件(含货主、顶级组织、物料基础信息、仓库、库位等)
|
||||||
|
* @return 匹配条件的物料库存信息,无匹配数据时返回 null
|
||||||
|
*/
|
||||||
public MaterialInventoryPO selectOneByWhere(MaterialInventoryDO materialInventoryDO) {
|
public MaterialInventoryPO selectOneByWhere(MaterialInventoryDO materialInventoryDO) {
|
||||||
return materialInventoryService.selectOneByWhere(materialInventoryDO);
|
return materialInventoryService.selectOneByWhere(materialInventoryDO);
|
||||||
}
|
}
|
||||||
|
|||||||
+8
@@ -42,10 +42,18 @@ public class ImmediateInventoryPO {
|
|||||||
@Excel(name = "物料条形码")
|
@Excel(name = "物料条形码")
|
||||||
private String barCode;
|
private String barCode;
|
||||||
|
|
||||||
|
@ApiModelProperty("规格型号")
|
||||||
|
@Excel(name = "规格型号")
|
||||||
|
private String specificationModel;
|
||||||
|
|
||||||
@ApiModelProperty("库存数量")
|
@ApiModelProperty("库存数量")
|
||||||
@Excel(name = "库存数量")
|
@Excel(name = "库存数量")
|
||||||
private BigDecimal inventoryQuantity;
|
private BigDecimal inventoryQuantity;
|
||||||
|
|
||||||
|
@ApiModelProperty("库存数量合计(当前查询条件下所有库存数量之和)")
|
||||||
|
@Excel(name = "库存数量合计")
|
||||||
|
private BigDecimal totalInventoryQuantity;
|
||||||
|
|
||||||
@ApiModelProperty("可用数量 ")
|
@ApiModelProperty("可用数量 ")
|
||||||
@Excel(name = "可用数量 ")
|
@Excel(name = "可用数量 ")
|
||||||
private BigDecimal allocationQuantity;
|
private BigDecimal allocationQuantity;
|
||||||
|
|||||||
+4
@@ -44,6 +44,10 @@ public class ImmediateInventoryDO extends BaseVOEntity {
|
|||||||
@Excel(name = "物料条形码")
|
@Excel(name = "物料条形码")
|
||||||
private String barCode;
|
private String barCode;
|
||||||
|
|
||||||
|
@ApiModelProperty("规格型号")
|
||||||
|
@Excel(name = "规格型号")
|
||||||
|
private String specificationModel;
|
||||||
|
|
||||||
@ApiModelProperty("仓库id")
|
@ApiModelProperty("仓库id")
|
||||||
@Excel(name = "仓库id")
|
@Excel(name = "仓库id")
|
||||||
private Long warehouseId;
|
private Long warehouseId;
|
||||||
|
|||||||
+4
@@ -45,6 +45,10 @@ public class ImmediateInventoryDTO {
|
|||||||
@Excel(name = "物料条形码")
|
@Excel(name = "物料条形码")
|
||||||
private String barCode;
|
private String barCode;
|
||||||
|
|
||||||
|
@ApiModelProperty("规格型号")
|
||||||
|
@Excel(name = "规格型号")
|
||||||
|
private String specificationModel;
|
||||||
|
|
||||||
@ApiModelProperty("仓库id")
|
@ApiModelProperty("仓库id")
|
||||||
@Excel(name = "仓库id")
|
@Excel(name = "仓库id")
|
||||||
private Long warehouseId;
|
private Long warehouseId;
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
and a.material_base_info_id = #{materialBaseInfoId}
|
and a.material_base_info_id = #{materialBaseInfoId}
|
||||||
</if>
|
</if>
|
||||||
<if test="materialDetailId != null ">
|
<if test="materialDetailId != null ">
|
||||||
and a.material_detail_id, = #{materialDetailId}
|
and a.material_detail_id = #{materialDetailId}
|
||||||
</if>
|
</if>
|
||||||
<!-- 容器号或批次号:containerOrBatch 优先;若 batchNumber 与 containerCode 相同则按 OR 查(PDA 单输入框传两个相同值) -->
|
<!-- 容器号或批次号:containerOrBatch 优先;若 batchNumber 与 containerCode 相同则按 OR 查(PDA 单输入框传两个相同值) -->
|
||||||
<choose>
|
<choose>
|
||||||
@@ -313,7 +313,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
and mi.material_base_info_id = #{materialBaseInfoId}
|
and mi.material_base_info_id = #{materialBaseInfoId}
|
||||||
</if>
|
</if>
|
||||||
<if test="materialDetailId != null ">
|
<if test="materialDetailId != null ">
|
||||||
and mi.material_detail_id, = #{materialDetailId}
|
and mi.material_detail_id = #{materialDetailId}
|
||||||
</if>
|
</if>
|
||||||
<choose>
|
<choose>
|
||||||
<when test="containerOrBatch != null and containerOrBatch != ''">
|
<when test="containerOrBatch != null and containerOrBatch != ''">
|
||||||
@@ -781,12 +781,280 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
and container_id = #{containerId}
|
and container_id = #{containerId}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<sql id="immediateInventoryQueryWhere">
|
||||||
|
<if test="organizationId != null ">
|
||||||
|
and a.organization_id = #{organizationId}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="topOrganizationId != null ">
|
||||||
|
and a.top_organization_id = #{topOrganizationId}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="shipperName != null and shipperName != ''">
|
||||||
|
and (a.shipper_name = #{shipperName} OR b.shipper_name = #{shipperName})
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="shipperId != null and shipperId != '' ">
|
||||||
|
and a.shipper_id = #{shipperId}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="warehouseId != null and warehouseId != '' ">
|
||||||
|
and a.warehouse_id = #{warehouseId}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="warehouseCode != null and warehouseCode != '' ">
|
||||||
|
and a.warehouse_code = #{warehouseCode}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="warehouseName != null and warehouseName != '' ">
|
||||||
|
and a.warehouse_name like concat('%', #{warehouseName}, '%')
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="materialName != null and materialName != '' ">
|
||||||
|
and b.material_name = #{materialName}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="materialCode != null and materialCode != '' ">
|
||||||
|
and b.material_code = #{materialCode}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="barCode != null and barCode != '' ">
|
||||||
|
and b.bar_code = #{barCode}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="specificationModel != null and specificationModel != ''">
|
||||||
|
and b.specification_model = #{specificationModel}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="batchNumber != null and batchNumber != ''">
|
||||||
|
and a.batch_number = #{batchNumber}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="receivedQuantityStart != null ">
|
||||||
|
and ifnull(
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
sum( c.receipt_quantity )
|
||||||
|
FROM
|
||||||
|
receipt_material_detail c
|
||||||
|
LEFT JOIN stock_receipt_order d ON c.receipt_order_number = d.receipt_order_number
|
||||||
|
AND d.del_flag = 1
|
||||||
|
LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number and e.DEL_FLAG = 1 and d.DEL_FLAG = 1
|
||||||
|
WHERE
|
||||||
|
c.del_flag = 1 and d.STATUS = 3
|
||||||
|
AND e.warehouse_id = a.warehouse_id
|
||||||
|
AND (a.shipper_id IS NULL OR e.shipper_id = a.shipper_id)
|
||||||
|
AND c.material_base_info_id = a.material_base_info_id
|
||||||
|
and (c.BATCH_REF_NO = a.batch_ref_no or (c.BATCH_REF_NO is null and a.BATCH_REF_NO is null))
|
||||||
|
and (c.SHEET_REF_NO = a.sheet_ref_no or (c.SHEET_REF_NO is null and a.SHEET_REF_NO is null))
|
||||||
|
and (c.BOX_PALLET_NO = a.BOX_PALLET_NO or (c.BOX_PALLET_NO is null and a.BOX_PALLET_NO is null))
|
||||||
|
and (c.EXT_ATTR_1 = a.EXT_ATTR_1 or (c.EXT_ATTR_1 is null and a.EXT_ATTR_1 is null))
|
||||||
|
and (c.EXT_ATTR_2 = a.EXT_ATTR_2 or (c.EXT_ATTR_2 is null and a.EXT_ATTR_2 is null))
|
||||||
|
and (c.EXT_ATTR_3 = a.EXT_ATTR_3 or (c.EXT_ATTR_3 is null and a.EXT_ATTR_3 is null))
|
||||||
|
and (c.EXT_ATTR_4 = a.EXT_ATTR_4 or (c.EXT_ATTR_4 is null and a.EXT_ATTR_4 is null))
|
||||||
|
and (c.PRODUCTION_DATE = a.PRODUCTION_DATE or (c.PRODUCTION_DATE is null and a.PRODUCTION_DATE is null))
|
||||||
|
and (c.EXPIRY_DATE = a.EXPIRY_DATE or (c.EXPIRY_DATE is null and a.EXPIRY_DATE is null))
|
||||||
|
and (c.INVENTORY_DATE = a.INVENTORY_DATE or (c.INVENTORY_DATE is null and a.INVENTORY_DATE is null))
|
||||||
|
),
|
||||||
|
0
|
||||||
|
)> #{receivedQuantityStart}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="receivedQuantityEnd != null ">
|
||||||
|
and ifnull(
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
sum( c.receipt_quantity )
|
||||||
|
FROM
|
||||||
|
receipt_material_detail c
|
||||||
|
LEFT JOIN stock_receipt_order d ON c.receipt_order_number = d.receipt_order_number
|
||||||
|
AND d.del_flag = 1
|
||||||
|
LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number and e.DEL_FLAG = 1 and d.DEL_FLAG = 1
|
||||||
|
WHERE
|
||||||
|
c.del_flag = 1 and d.STATUS = 3
|
||||||
|
AND e.warehouse_id = a.warehouse_id
|
||||||
|
AND (a.shipper_id IS NULL OR e.shipper_id = a.shipper_id)
|
||||||
|
AND c.material_base_info_id = a.material_base_info_id
|
||||||
|
and (c.BATCH_REF_NO = a.batch_ref_no or (c.BATCH_REF_NO is null and a.BATCH_REF_NO is null))
|
||||||
|
and (c.SHEET_REF_NO = a.sheet_ref_no or (c.SHEET_REF_NO is null and a.SHEET_REF_NO is null))
|
||||||
|
and (c.BOX_PALLET_NO = a.BOX_PALLET_NO or (c.BOX_PALLET_NO is null and a.BOX_PALLET_NO is null))
|
||||||
|
and (c.EXT_ATTR_1 = a.EXT_ATTR_1 or (c.EXT_ATTR_1 is null and a.EXT_ATTR_1 is null))
|
||||||
|
and (c.EXT_ATTR_2 = a.EXT_ATTR_2 or (c.EXT_ATTR_2 is null and a.EXT_ATTR_2 is null))
|
||||||
|
and (c.EXT_ATTR_3 = a.EXT_ATTR_3 or (c.EXT_ATTR_3 is null and a.EXT_ATTR_3 is null))
|
||||||
|
and (c.EXT_ATTR_4 = a.EXT_ATTR_4 or (c.EXT_ATTR_4 is null and a.EXT_ATTR_4 is null))
|
||||||
|
and (c.PRODUCTION_DATE = a.PRODUCTION_DATE or (c.PRODUCTION_DATE is null and a.PRODUCTION_DATE is null))
|
||||||
|
and (c.EXPIRY_DATE = a.EXPIRY_DATE or (c.EXPIRY_DATE is null and a.EXPIRY_DATE is null))
|
||||||
|
and (c.INVENTORY_DATE = a.INVENTORY_DATE or (c.INVENTORY_DATE is null and a.INVENTORY_DATE is null))
|
||||||
|
),
|
||||||
|
0
|
||||||
|
) < #{receivedQuantityEnd}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="shelvesQuantityStart != null ">
|
||||||
|
and ifnull(
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
sum( c.shelves_quantity )
|
||||||
|
FROM
|
||||||
|
shelf_material_detail c
|
||||||
|
LEFT JOIN stock_shelf_order d ON c.shelf_order_number = d.shelf_order_number
|
||||||
|
AND d.del_flag = 1
|
||||||
|
LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number and e.DEL_FLAG = 1 and d.DEL_FLAG = 1
|
||||||
|
WHERE
|
||||||
|
c.del_flag = 1
|
||||||
|
AND e.warehouse_id = a.warehouse_id
|
||||||
|
AND (a.shipper_id IS NULL OR e.shipper_id = a.shipper_id)
|
||||||
|
AND c.material_base_info_id = a.material_base_info_id
|
||||||
|
),
|
||||||
|
0
|
||||||
|
) > #{shelvesQuantityStart}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="shelvesQuantityEnd != null ">
|
||||||
|
and ifnull(
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
sum( c.shelves_quantity )
|
||||||
|
FROM
|
||||||
|
shelf_material_detail c
|
||||||
|
LEFT JOIN stock_shelf_order d ON c.shelf_order_number = d.shelf_order_number
|
||||||
|
AND d.del_flag = 1
|
||||||
|
LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number and e.DEL_FLAG = 1 and d.DEL_FLAG = 1
|
||||||
|
WHERE
|
||||||
|
c.del_flag = 1
|
||||||
|
AND e.warehouse_id = a.warehouse_id
|
||||||
|
AND (a.shipper_id IS NULL OR e.shipper_id = a.shipper_id)
|
||||||
|
AND c.material_base_info_id = a.material_base_info_id
|
||||||
|
),
|
||||||
|
0
|
||||||
|
) < #{shelvesQuantityEnd}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="pickQuantityStart != null ">
|
||||||
|
and ifnull(
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
sum( c.picking_quantity )
|
||||||
|
FROM
|
||||||
|
picking_material_detail c
|
||||||
|
LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER and c.del_flag = 1 and d.del_flag=1
|
||||||
|
left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1
|
||||||
|
WHERE
|
||||||
|
c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7
|
||||||
|
AND d.warehouse_id = a.warehouse_id
|
||||||
|
AND (a.shipper_id IS NULL OR d.shipper_id = a.shipper_id)
|
||||||
|
AND c.material_base_info_id = a.material_base_info_id
|
||||||
|
AND c.MATERIAL_INVENTORY_ID = a.MATERIAL_INVENTORY_ID
|
||||||
|
),
|
||||||
|
0
|
||||||
|
) > #{pickQuantityStart}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="pickQuantityEnd != null ">
|
||||||
|
and ifnull(
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
sum( c.picking_quantity )
|
||||||
|
FROM
|
||||||
|
picking_material_detail c
|
||||||
|
LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER and c.del_flag = 1 and d.del_flag=1
|
||||||
|
left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1
|
||||||
|
WHERE
|
||||||
|
c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7
|
||||||
|
AND d.warehouse_id = a.warehouse_id
|
||||||
|
AND (a.shipper_id IS NULL OR d.shipper_id = a.shipper_id)
|
||||||
|
AND c.material_base_info_id = a.material_base_info_id
|
||||||
|
AND c.MATERIAL_INVENTORY_ID = a.MATERIAL_INVENTORY_ID
|
||||||
|
),
|
||||||
|
0
|
||||||
|
) < #{pickQuantityEnd}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="checkQuantityBegin != null ">
|
||||||
|
and
|
||||||
|
ifnull(
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
SUM(c.CHECK_QUANTITY) AS CHECK_QUANTITY
|
||||||
|
FROM
|
||||||
|
OUT_MATERIAL_DETAIL c
|
||||||
|
LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER and c.del_flag = 1 and d.del_flag = 1
|
||||||
|
LEFT JOIN HANDOVER_TASK_ORDER e ON d.OUT_ORDER_NUMBER = e.ORDER_NUMBER
|
||||||
|
WHERE
|
||||||
|
d.CHECK_STATUS in (2,3) and e.STATUS = 1 and d.STATUS in (8,12)
|
||||||
|
AND d.DEL_FLAG = 1
|
||||||
|
AND c.DEL_FLAG = 1
|
||||||
|
and e.del_flag = 1
|
||||||
|
AND d.warehouse_id = a.warehouse_id
|
||||||
|
AND (a.shipper_id IS NULL OR d.shipper_id = a.shipper_id)
|
||||||
|
AND c.material_base_info_id = a.material_base_info_id
|
||||||
|
AND c.MATERIAL_INVENTORY_ID = a.MATERIAL_INVENTORY_ID
|
||||||
|
),
|
||||||
|
0
|
||||||
|
) > #{checkQuantityBegin}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="checkQuantityEnd != null ">
|
||||||
|
and
|
||||||
|
ifnull(
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
SUM(c.CHECK_QUANTITY) AS CHECK_QUANTITY
|
||||||
|
FROM
|
||||||
|
OUT_MATERIAL_DETAIL c
|
||||||
|
LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER and c.del_flag = 1 and d.del_flag = 1
|
||||||
|
LEFT JOIN HANDOVER_TASK_ORDER e ON d.OUT_ORDER_NUMBER = e.ORDER_NUMBER
|
||||||
|
WHERE
|
||||||
|
d.CHECK_STATUS in (2,3) and e.STATUS = 1 and d.STATUS in (8,12)
|
||||||
|
AND d.DEL_FLAG = 1
|
||||||
|
AND c.DEL_FLAG = 1
|
||||||
|
and e.del_flag = 1
|
||||||
|
AND d.warehouse_id = a.warehouse_id
|
||||||
|
AND (a.shipper_id IS NULL OR d.shipper_id = a.shipper_id)
|
||||||
|
AND c.material_base_info_id = a.material_base_info_id
|
||||||
|
AND c.MATERIAL_INVENTORY_ID = a.MATERIAL_INVENTORY_ID
|
||||||
|
),
|
||||||
|
0
|
||||||
|
) < #{checkQuantityEnd}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="inventoryQuantity != null ">
|
||||||
|
and a.inventory_quantity = #{inventoryQuantity}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="inventoryQuantityStart != null ">
|
||||||
|
and a.inventory_quantity > #{inventoryQuantityStart}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="inventoryQuantityEnd != null ">
|
||||||
|
and a.inventory_quantity < #{inventoryQuantityEnd}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="allocationQuantityStart != null ">
|
||||||
|
and a.allocation_quantity > #{allocationQuantityStart}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="allocationQuantityEnd != null ">
|
||||||
|
and a.allocation_quantity < #{allocationQuantityEnd}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="freezeQuantityStart != null ">
|
||||||
|
and a.freeze_quantity > #{freezeQuantityStart}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="freezeQuantityEnd != null ">
|
||||||
|
and a.freeze_quantity < #{freezeQuantityEnd}
|
||||||
|
</if>
|
||||||
|
</sql>
|
||||||
|
|
||||||
<resultMap type="com.mhd.wms.domain.statementStatistics.po.ImmediateInventoryPO" id="queryImmediateInventoryListResult">
|
<resultMap type="com.mhd.wms.domain.statementStatistics.po.ImmediateInventoryPO" id="queryImmediateInventoryListResult">
|
||||||
|
|
||||||
<result property="shipperName" column="shipper_name" />
|
<result property="shipperName" column="shipper_name" />
|
||||||
<result property="materialCode" column="material_code" />
|
<result property="materialCode" column="material_code" />
|
||||||
<result property="materialName" column="material_name" />
|
<result property="materialName" column="material_name" />
|
||||||
<result property="barCode" column="bar_code" />
|
<result property="barCode" column="bar_code" />
|
||||||
|
<result property="specificationModel" column="specification_model" />
|
||||||
|
<result property="totalInventoryQuantity" column="total_inventory_quantity" />
|
||||||
<result property="warehouseName" column="warehouse_name" />
|
<result property="warehouseName" column="warehouse_name" />
|
||||||
<result property="inventoryQuantity" column="inventory_quantity" />
|
<result property="inventoryQuantity" column="inventory_quantity" />
|
||||||
<result property="allocationQuantity" column="allocation_quantity" />
|
<result property="allocationQuantity" column="allocation_quantity" />
|
||||||
@@ -826,6 +1094,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
b.material_name,
|
b.material_name,
|
||||||
b.material_code,
|
b.material_code,
|
||||||
b.bar_code,
|
b.bar_code,
|
||||||
|
b.specification_model,
|
||||||
<!-- sum(a.inventory_quantity) inventory_quantity,
|
<!-- sum(a.inventory_quantity) inventory_quantity,
|
||||||
sum(a.allocation_quantity) allocation_quantity,
|
sum(a.allocation_quantity) allocation_quantity,
|
||||||
sum(a.freeze_quantity) freeze_quantity,-->
|
sum(a.freeze_quantity) freeze_quantity,-->
|
||||||
@@ -995,271 +1264,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
WHERE
|
WHERE
|
||||||
a.del_flag = 1
|
a.del_flag = 1
|
||||||
|
|
||||||
<if test="organizationId != null ">
|
<include refid="immediateInventoryQueryWhere"/>
|
||||||
and a.organization_id = #{organizationId}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="topOrganizationId != null ">
|
|
||||||
and a.top_organization_id = #{topOrganizationId}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="shipperName != null and shipperName != ''">
|
|
||||||
and (a.shipper_name = #{shipperName} OR b.shipper_name = #{shipperName})
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="shipperId != null and shipperId != '' ">
|
|
||||||
and a.shipper_id = #{shipperId}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="warehouseId != null and warehouseId != '' ">
|
|
||||||
and a.warehouse_id = #{warehouseId}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="warehouseCode != null and warehouseCode != '' ">
|
|
||||||
and a.warehouse_code = #{warehouseCode}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="warehouseName != null and warehouseName != '' ">
|
|
||||||
and a.warehouse_name like concat('%', #{warehouseName}, '%')
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="materialName != null and materialName != '' ">
|
|
||||||
and b.material_name = #{materialName}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="materialCode != null and materialCode != '' ">
|
|
||||||
and b.material_code = #{materialCode}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="barCode != null and barCode != '' ">
|
|
||||||
and b.bar_code = #{barCode}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="batchNumber != null and batchNumber != ''">
|
|
||||||
and a.batch_number = #{batchNumber}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="receivedQuantityStart != null ">
|
|
||||||
and ifnull(
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
sum( c.receipt_quantity )
|
|
||||||
FROM
|
|
||||||
receipt_material_detail c
|
|
||||||
LEFT JOIN stock_receipt_order d ON c.receipt_order_number = d.receipt_order_number
|
|
||||||
AND d.del_flag = 1
|
|
||||||
LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number and e.DEL_FLAG = 1 and d.DEL_FLAG = 1
|
|
||||||
WHERE
|
|
||||||
c.del_flag = 1 and d.STATUS = 3
|
|
||||||
AND e.warehouse_id = a.warehouse_id
|
|
||||||
AND (a.shipper_id IS NULL OR e.shipper_id = a.shipper_id)
|
|
||||||
AND c.material_base_info_id = a.material_base_info_id
|
|
||||||
and (c.BATCH_REF_NO = a.batch_ref_no or (c.BATCH_REF_NO is null and a.BATCH_REF_NO is null))
|
|
||||||
and (c.SHEET_REF_NO = a.sheet_ref_no or (c.SHEET_REF_NO is null and a.SHEET_REF_NO is null))
|
|
||||||
and (c.BOX_PALLET_NO = a.BOX_PALLET_NO or (c.BOX_PALLET_NO is null and a.BOX_PALLET_NO is null))
|
|
||||||
and (c.EXT_ATTR_1 = a.EXT_ATTR_1 or (c.EXT_ATTR_1 is null and a.EXT_ATTR_1 is null))
|
|
||||||
and (c.EXT_ATTR_2 = a.EXT_ATTR_2 or (c.EXT_ATTR_2 is null and a.EXT_ATTR_2 is null))
|
|
||||||
and (c.EXT_ATTR_3 = a.EXT_ATTR_3 or (c.EXT_ATTR_3 is null and a.EXT_ATTR_3 is null))
|
|
||||||
and (c.EXT_ATTR_4 = a.EXT_ATTR_4 or (c.EXT_ATTR_4 is null and a.EXT_ATTR_4 is null))
|
|
||||||
and (c.PRODUCTION_DATE = a.PRODUCTION_DATE or (c.PRODUCTION_DATE is null and a.PRODUCTION_DATE is null))
|
|
||||||
and (c.EXPIRY_DATE = a.EXPIRY_DATE or (c.EXPIRY_DATE is null and a.EXPIRY_DATE is null))
|
|
||||||
and (c.INVENTORY_DATE = a.INVENTORY_DATE or (c.INVENTORY_DATE is null and a.INVENTORY_DATE is null))
|
|
||||||
),
|
|
||||||
0
|
|
||||||
)> #{receivedQuantityStart}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="receivedQuantityEnd != null ">
|
|
||||||
and ifnull(
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
sum( c.receipt_quantity )
|
|
||||||
FROM
|
|
||||||
receipt_material_detail c
|
|
||||||
LEFT JOIN stock_receipt_order d ON c.receipt_order_number = d.receipt_order_number
|
|
||||||
AND d.del_flag = 1
|
|
||||||
LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number and e.DEL_FLAG = 1 and d.DEL_FLAG = 1
|
|
||||||
WHERE
|
|
||||||
c.del_flag = 1 and d.STATUS = 3
|
|
||||||
AND e.warehouse_id = a.warehouse_id
|
|
||||||
AND (a.shipper_id IS NULL OR e.shipper_id = a.shipper_id)
|
|
||||||
AND c.material_base_info_id = a.material_base_info_id
|
|
||||||
and (c.BATCH_REF_NO = a.batch_ref_no or (c.BATCH_REF_NO is null and a.BATCH_REF_NO is null))
|
|
||||||
and (c.SHEET_REF_NO = a.sheet_ref_no or (c.SHEET_REF_NO is null and a.SHEET_REF_NO is null))
|
|
||||||
and (c.BOX_PALLET_NO = a.BOX_PALLET_NO or (c.BOX_PALLET_NO is null and a.BOX_PALLET_NO is null))
|
|
||||||
and (c.EXT_ATTR_1 = a.EXT_ATTR_1 or (c.EXT_ATTR_1 is null and a.EXT_ATTR_1 is null))
|
|
||||||
and (c.EXT_ATTR_2 = a.EXT_ATTR_2 or (c.EXT_ATTR_2 is null and a.EXT_ATTR_2 is null))
|
|
||||||
and (c.EXT_ATTR_3 = a.EXT_ATTR_3 or (c.EXT_ATTR_3 is null and a.EXT_ATTR_3 is null))
|
|
||||||
and (c.EXT_ATTR_4 = a.EXT_ATTR_4 or (c.EXT_ATTR_4 is null and a.EXT_ATTR_4 is null))
|
|
||||||
and (c.PRODUCTION_DATE = a.PRODUCTION_DATE or (c.PRODUCTION_DATE is null and a.PRODUCTION_DATE is null))
|
|
||||||
and (c.EXPIRY_DATE = a.EXPIRY_DATE or (c.EXPIRY_DATE is null and a.EXPIRY_DATE is null))
|
|
||||||
and (c.INVENTORY_DATE = a.INVENTORY_DATE or (c.INVENTORY_DATE is null and a.INVENTORY_DATE is null))
|
|
||||||
),
|
|
||||||
0
|
|
||||||
) < #{receivedQuantityEnd}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="shelvesQuantityStart != null ">
|
|
||||||
and ifnull(
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
sum( c.shelves_quantity )
|
|
||||||
FROM
|
|
||||||
shelf_material_detail c
|
|
||||||
LEFT JOIN stock_shelf_order d ON c.shelf_order_number = d.shelf_order_number
|
|
||||||
AND d.del_flag = 1
|
|
||||||
LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number and e.DEL_FLAG = 1 and d.DEL_FLAG = 1
|
|
||||||
WHERE
|
|
||||||
c.del_flag = 1
|
|
||||||
AND e.warehouse_id = a.warehouse_id
|
|
||||||
AND (a.shipper_id IS NULL OR e.shipper_id = a.shipper_id)
|
|
||||||
AND c.material_base_info_id = a.material_base_info_id
|
|
||||||
),
|
|
||||||
0
|
|
||||||
) > #{shelvesQuantityStart}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="shelvesQuantityEnd != null ">
|
|
||||||
and ifnull(
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
sum( c.shelves_quantity )
|
|
||||||
FROM
|
|
||||||
shelf_material_detail c
|
|
||||||
LEFT JOIN stock_shelf_order d ON c.shelf_order_number = d.shelf_order_number
|
|
||||||
AND d.del_flag = 1
|
|
||||||
LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number and e.DEL_FLAG = 1 and d.DEL_FLAG = 1
|
|
||||||
WHERE
|
|
||||||
c.del_flag = 1
|
|
||||||
AND e.warehouse_id = a.warehouse_id
|
|
||||||
AND (a.shipper_id IS NULL OR e.shipper_id = a.shipper_id)
|
|
||||||
AND c.material_base_info_id = a.material_base_info_id
|
|
||||||
),
|
|
||||||
0
|
|
||||||
) < #{shelvesQuantityEnd}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="pickQuantityStart != null ">
|
|
||||||
and ifnull(
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
sum( c.picking_quantity )
|
|
||||||
FROM
|
|
||||||
picking_material_detail c
|
|
||||||
LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER and c.del_flag = 1 and d.del_flag=1
|
|
||||||
left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1
|
|
||||||
WHERE
|
|
||||||
c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7
|
|
||||||
AND d.warehouse_id = a.warehouse_id
|
|
||||||
AND (a.shipper_id IS NULL OR d.shipper_id = a.shipper_id)
|
|
||||||
AND c.material_base_info_id = a.material_base_info_id
|
|
||||||
AND c.MATERIAL_INVENTORY_ID = a.MATERIAL_INVENTORY_ID
|
|
||||||
),
|
|
||||||
0
|
|
||||||
) > #{pickQuantityStart}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="pickQuantityEnd != null ">
|
|
||||||
and ifnull(
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
sum( c.picking_quantity )
|
|
||||||
FROM
|
|
||||||
picking_material_detail c
|
|
||||||
LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER and c.del_flag = 1 and d.del_flag=1
|
|
||||||
left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1
|
|
||||||
WHERE
|
|
||||||
c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7
|
|
||||||
AND d.warehouse_id = a.warehouse_id
|
|
||||||
AND (a.shipper_id IS NULL OR d.shipper_id = a.shipper_id)
|
|
||||||
AND c.material_base_info_id = a.material_base_info_id
|
|
||||||
AND c.MATERIAL_INVENTORY_ID = a.MATERIAL_INVENTORY_ID
|
|
||||||
),
|
|
||||||
0
|
|
||||||
) < #{pickQuantityEnd}
|
|
||||||
</if>
|
|
||||||
<!--
|
|
||||||
GROUP BY
|
|
||||||
a.warehouse_id,
|
|
||||||
a.material_base_info_id,
|
|
||||||
a.shipper_id
|
|
||||||
HAVING 1=1-->
|
|
||||||
|
|
||||||
<if test="checkQuantityBegin != null ">
|
|
||||||
and
|
|
||||||
ifnull(
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
SUM(c.CHECK_QUANTITY) AS CHECK_QUANTITY
|
|
||||||
FROM
|
|
||||||
OUT_MATERIAL_DETAIL c
|
|
||||||
LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER and c.del_flag = 1 and d.del_flag = 1
|
|
||||||
LEFT JOIN HANDOVER_TASK_ORDER e ON d.OUT_ORDER_NUMBER = e.ORDER_NUMBER
|
|
||||||
WHERE
|
|
||||||
d.CHECK_STATUS in (2,3) and e.STATUS = 1 and d.STATUS in (8,12)
|
|
||||||
AND d.DEL_FLAG = 1
|
|
||||||
AND c.DEL_FLAG = 1
|
|
||||||
and e.del_flag = 1
|
|
||||||
AND d.warehouse_id = a.warehouse_id
|
|
||||||
AND (a.shipper_id IS NULL OR d.shipper_id = a.shipper_id)
|
|
||||||
AND c.material_base_info_id = a.material_base_info_id
|
|
||||||
AND c.MATERIAL_INVENTORY_ID = a.MATERIAL_INVENTORY_ID
|
|
||||||
),
|
|
||||||
0
|
|
||||||
) > #{checkQuantityBegin}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="checkQuantityEnd != null ">
|
|
||||||
and
|
|
||||||
ifnull(
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
SUM(c.CHECK_QUANTITY) AS CHECK_QUANTITY
|
|
||||||
FROM
|
|
||||||
OUT_MATERIAL_DETAIL c
|
|
||||||
LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER and c.del_flag = 1 and d.del_flag = 1
|
|
||||||
LEFT JOIN HANDOVER_TASK_ORDER e ON d.OUT_ORDER_NUMBER = e.ORDER_NUMBER
|
|
||||||
WHERE
|
|
||||||
d.CHECK_STATUS in (2,3) and e.STATUS = 1 and d.STATUS in (8,12)
|
|
||||||
AND d.DEL_FLAG = 1
|
|
||||||
AND c.DEL_FLAG = 1
|
|
||||||
and e.del_flag = 1
|
|
||||||
AND d.warehouse_id = a.warehouse_id
|
|
||||||
AND (a.shipper_id IS NULL OR d.shipper_id = a.shipper_id)
|
|
||||||
AND c.material_base_info_id = a.material_base_info_id
|
|
||||||
AND c.MATERIAL_INVENTORY_ID = a.MATERIAL_INVENTORY_ID
|
|
||||||
),
|
|
||||||
0
|
|
||||||
) < #{checkQuantityEnd}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="inventoryQuantity != null ">
|
|
||||||
and a.inventory_quantity = #{inventoryQuantity}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="inventoryQuantityStart != null ">
|
|
||||||
and a.inventory_quantity > #{inventoryQuantityStart}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="inventoryQuantityEnd != null ">
|
|
||||||
and a.inventory_quantity < #{inventoryQuantityEnd}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="allocationQuantityStart != null ">
|
|
||||||
and a.allocation_quantity > #{allocationQuantityStart}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="allocationQuantityEnd != null ">
|
|
||||||
and a.allocation_quantity < #{allocationQuantityEnd}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="freezeQuantityStart != null ">
|
|
||||||
and a.freeze_quantity > #{freezeQuantityStart}
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="freezeQuantityEnd != null ">
|
|
||||||
and a.freeze_quantity < #{freezeQuantityEnd}
|
|
||||||
</if>
|
|
||||||
ORDER BY GREATEST(
|
ORDER BY GREATEST(
|
||||||
IFNULL(a.update_time, '1970-01-01 00:00:00'),
|
IFNULL(a.update_time, '1970-01-01 00:00:00'),
|
||||||
IFNULL((
|
IFNULL((
|
||||||
@@ -1330,6 +1335,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="sumImmediateInventoryQuantity" parameterType="com.mhd.wms.domain.statementStatistics.todo.ImmediateInventoryDO"
|
||||||
|
resultType="java.math.BigDecimal">
|
||||||
|
SELECT IFNULL(SUM(a.inventory_quantity), 0)
|
||||||
|
FROM material_inventory a
|
||||||
|
left join material_base_info b on a.material_base_info_id = b.material_base_info_id
|
||||||
|
WHERE a.del_flag = 1
|
||||||
|
<include refid="immediateInventoryQueryWhere"/>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
<select id="selectListByWhere" parameterType="com.mhd.wms.domain.materialInventory.entity.MaterialInventory"
|
<select id="selectListByWhere" parameterType="com.mhd.wms.domain.materialInventory.entity.MaterialInventory"
|
||||||
resultMap="MaterialInventoryResult">
|
resultMap="MaterialInventoryResult">
|
||||||
|
|||||||
Reference in New Issue
Block a user