feat(wms): 采购订单物料列表增加已入库数量统计

- 新增接口和方法查询带已入库数量的采购订单物料列表
- 在 WmsPurchaseOrderDetailVo 中添加已入库数量和剩余可入库数量字段
- 实现查询逻辑,通过左连接和子查询计算已入库数量
- 出库单添加客户字段
master
zangch@mesnac.com 2 days ago
parent d497f61c48
commit 0fa1319217

@ -114,4 +114,13 @@ public class WmsPurchaseOrderDetailController extends BaseController {
List<WmsPurchaseOrderDetailVo> list = wmsPurchaseOrderDetailService.queryList(bo);
return R.ok(list);
}
/**
* -
*/
@GetMapping("/listWithInstockedQty")
public R<List<WmsPurchaseOrderDetailVo>> listWithInstockedQty(WmsPurchaseOrderDetailBo bo) {
List<WmsPurchaseOrderDetailVo> list = wmsPurchaseOrderDetailService.queryListWithInstockedQty(bo);
return R.ok(list);
}
}

@ -82,6 +82,11 @@ public class WmsOutstockOrder {
@TableField(fill = FieldFill.INSERT)
private String createBy;
/**
* idorder_type1
*/
private Long customerId;
/**
*
*/

@ -1,17 +1,16 @@
package org.dromara.wms.domain.bo;
import org.dromara.wms.domain.BaseMaterialInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.wms.domain.BaseMaterialInfo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* base_material_info
@ -32,7 +31,7 @@ public class BaseMaterialInfoBo extends BaseEntity {
/**
* ERP
*/
@NotBlank(message = "ERP信息不能为空", groups = { AddGroup.class, EditGroup.class })
// @NotBlank(message = "ERP信息不能为空", groups = { AddGroup.class, EditGroup.class })
private String erpId;
/**

@ -1,16 +1,13 @@
package org.dromara.wms.domain.bo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.wms.domain.WmsOutstockOrder;
import java.util.Date;
/**
* wms_outstock_order
*
@ -89,5 +86,9 @@ public class WmsOutstockOrderBo extends BaseEntity {
private String auditComments;
private String tenantId;
/**
* idorder_type1
*/
private Long customerId;
}

@ -1,14 +1,9 @@
package org.dromara.wms.domain.vo;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.wms.domain.WmsOutstockOrder;
@ -105,6 +100,11 @@ public class WmsOutstockOrderVo implements Serializable {
@TableField(fill = FieldFill.INSERT)
private String createBy;
/**
* idorder_type1
*/
private Long customerId;
/**
*
*/

@ -97,5 +97,15 @@ public class WmsPurchaseOrderDetailVo implements Serializable {
private Long materialId;
/**
*
*/
private BigDecimal instockedQty;
/**
*
*/
private BigDecimal remainingQty;
}

@ -1,9 +1,12 @@
package org.dromara.wms.mapper;
import org.apache.ibatis.annotations.Param;
import org.dromara.wms.domain.WmsPurchaseOrderDetail;
import org.dromara.wms.domain.vo.WmsPurchaseOrderDetailVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.List;
/**
* -Mapper
*
@ -12,4 +15,12 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
*/
public interface WmsPurchaseOrderDetailMapper extends BaseMapperPlus<WmsPurchaseOrderDetail, WmsPurchaseOrderDetailVo> {
/**
*
*
* @param poNo
* @return
*/
List<WmsPurchaseOrderDetailVo> selectListWithInstockedQty(@Param("poNo") String poNo);
}

@ -1,34 +1,31 @@
package org.dromara.wms.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.wms.domain.WmsInstockDetail;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.wms.domain.WmsPurchaseOrderDetail;
import org.dromara.wms.domain.bo.BaseMaterialInfoBo;
import org.dromara.wms.domain.bo.WmsInstockDetailBo;
import org.dromara.wms.domain.bo.WmsPurchaseOrderDetailBo;
import org.dromara.wms.domain.vo.BaseMaterialInfoVo;
import org.dromara.wms.domain.vo.WmsPurchaseOrderDetailVo;
import org.dromara.wms.mapper.WmsPurchaseOrderDetailMapper;
import org.dromara.wms.service.IBaseMaterialInfoService;
import org.dromara.wms.service.IWmsInstockDetailService;
import org.dromara.wms.service.IWmsPurchaseOrderDetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.wms.domain.bo.WmsPurchaseOrderDetailBo;
import org.dromara.wms.domain.vo.WmsPurchaseOrderDetailVo;
import org.dromara.wms.domain.WmsPurchaseOrderDetail;
import org.dromara.wms.mapper.WmsPurchaseOrderDetailMapper;
import org.dromara.wms.service.IWmsPurchaseOrderDetailService;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* -Service
@ -44,6 +41,8 @@ public class WmsPurchaseOrderDetailServiceImpl implements IWmsPurchaseOrderDetai
@Autowired
private IBaseMaterialInfoService baseMaterialInfoService;
private final IWmsInstockDetailService wmsInstockDetailService;
/**
* -
*
@ -165,4 +164,19 @@ public class WmsPurchaseOrderDetailServiceImpl implements IWmsPurchaseOrderDetai
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* -
*
* @param bo
* @return -
*/
@Override
public List<WmsPurchaseOrderDetailVo> queryListWithInstockedQty(WmsPurchaseOrderDetailBo bo) {
if (StringUtils.isBlank(bo.getPoNo())) {
return new ArrayList<>();
}
return baseMapper.selectListWithInstockedQty(bo.getPoNo());
}
}

@ -4,4 +4,43 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.wms.mapper.WmsPurchaseOrderDetailMapper">
<!-- 查询采购订单物料列表(带已入库数量统计) -->
<select id="selectListWithInstockedQty" resultType="org.dromara.wms.domain.vo.WmsPurchaseOrderDetailVo">
SELECT
pod.po_d_id,
pod.material_code,
pod.material_name,
pod.po_no,
pod.tax_price,
pod.purchase_qty,
pod.material_spe,
pod.unit_name,
pod.delivery_qty,
pod.tenant_id,
pod.create_time,
COALESCE(instocked.instocked_qty, 0) as instocked_qty,
(pod.purchase_qty - COALESCE(instocked.instocked_qty, 0)) as remaining_qty
FROM wms_purchase_order_detail pod
LEFT JOIN (
SELECT
pod_inner.po_d_id,
SUM(wid.instock_qty) as instocked_qty
FROM wms_instock_detail wid
INNER JOIN wms_instock_order wio ON wid.instock_id = wio.instock_id
INNER JOIN wms_purchase_order_detail pod_inner ON (
(
wid.po_d_id = pod_inner.po_d_id
OR (
wid.material_code = pod_inner.material_code
AND wio.order_no = pod_inner.po_no
)
)
)
WHERE wio.instock_type = '1'
GROUP BY pod_inner.po_d_id
) instocked ON pod.po_d_id = instocked.po_d_id
WHERE pod.po_no = #{poNo}
ORDER BY pod.create_time DESC
</select>
</mapper>

Loading…
Cancel
Save