feat(wms): 优化调拨订单和详情的查询

- 在 WmsAllocateOrder 和 WmsAllocateOrderDetail 中添加仓库名称字段- 更新 WmsAllocateOrderDetailServiceImpl 和 WmsAllocateOrderServiceImpl 中的查询方法
- 在 WmsAllocateOrderDetailVo 和 WmsAllocateOrderVo 中添加仓库名称字段
- 优化查询性能,减少重复的 leftJoin 操作
master
zangch@mesnac.com 3 months ago
parent ce69970828
commit 9248f4485d

@ -126,10 +126,20 @@ public class WmsAllocateOrder{
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
/**
*
*/
@TableField(exist = false)
private String planWarehouseCode;
private String planWarehouseCode;//字段映射
@TableField(exist = false)
private String targetWarehouseCode;
private String targetWarehouseCode;//字段映射
@TableField(exist = false)
private String planWarehouseName;//字段映射
@TableField(exist = false)
private String targetWarehouseName;//字段映射
/**
*

@ -50,13 +50,13 @@ public class WmsAllocateOrderDetail {
* erp
*/
private Long erpSynchronousQty;
/**
*
*/
@TableField(exist = false)
private BigDecimal printedQty;
/**
* id
*/
@ -81,6 +81,12 @@ public class WmsAllocateOrderDetail {
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
/**
*
*/
@TableField(exist = false)
private String materialName;
@TableField(exist = false)
private String materialCode;

@ -4,8 +4,6 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.wms.domain.WmsAllocateOrderDetail;

@ -149,8 +149,12 @@ public class WmsAllocateOrderVo implements Serializable {
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
// 字段映射 仓库
private String planWarehouseCode;
private String targetWarehouseCode;
private String planWarehouseName;
private String targetWarehouseName;
/**
*

@ -1,30 +1,26 @@
package org.dromara.wms.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.wms.domain.BaseMaterialInfo;
import org.dromara.wms.domain.WmsAllocateOrderDetail;
import org.dromara.wms.domain.WmsBaseWarehouse;
import org.dromara.wms.domain.WmsMoveOrder;
import org.dromara.wms.domain.bo.WmsAllocateOrderDetailBo;
import org.dromara.wms.domain.bo.WmsMoveOrderBo;
import org.dromara.wms.domain.vo.WmsAllocateOrderDetailVo;
import org.dromara.wms.mapper.WmsAllocateOrderDetailMapper;
import org.dromara.wms.service.IWmsAllocateOrderDetailService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* Service
@ -72,13 +68,14 @@ public class WmsAllocateOrderDetailServiceImpl implements IWmsAllocateOrderDetai
*/
@Override
public List<WmsAllocateOrderDetailVo> queryList(WmsAllocateOrderDetailBo bo) {
LambdaQueryWrapper<WmsAllocateOrderDetail> lqw = buildQueryWrapper(bo);
MPJLambdaWrapper<WmsAllocateOrderDetail> lqw = buildJoinQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<WmsAllocateOrderDetail> buildQueryWrapper(WmsAllocateOrderDetailBo bo) {
private MPJLambdaWrapper<WmsAllocateOrderDetail> buildQueryWrapper(WmsAllocateOrderDetailBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WmsAllocateOrderDetail> lqw = Wrappers.lambdaQuery();
MPJLambdaWrapper<WmsAllocateOrderDetail> lqw = JoinWrappers.lambda(WmsAllocateOrderDetail.class);
lqw.eq(bo.getAoDId() != null, WmsAllocateOrderDetail::getAoDId, bo.getAoDId());
lqw.eq(StringUtils.isNotBlank(bo.getAllocateCode()), WmsAllocateOrderDetail::getAllocateCode, bo.getAllocateCode());
lqw.eq(bo.getMaterialId() != null, WmsAllocateOrderDetail::getMaterialId, bo.getMaterialId());
@ -90,7 +87,8 @@ public class WmsAllocateOrderDetailServiceImpl implements IWmsAllocateOrderDetai
private MPJLambdaWrapper<WmsAllocateOrderDetail> buildJoinQueryWrapper(WmsAllocateOrderDetailBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<WmsAllocateOrderDetail> lqw = JoinWrappers.lambda(WmsAllocateOrderDetail.class)
.selectAll(WmsAllocateOrderDetail.class).select(BaseMaterialInfo::getMaterialCode)
.selectAll(WmsAllocateOrderDetail.class)
.select(BaseMaterialInfo::getMaterialCode,BaseMaterialInfo::getMaterialName)
.leftJoin(BaseMaterialInfo.class,BaseMaterialInfo::getMaterialId,WmsAllocateOrderDetail::getMaterialId);
lqw.eq(bo.getAoDId() != null, WmsAllocateOrderDetail::getAoDId, bo.getAoDId());
lqw.eq(StringUtils.isNotBlank(bo.getAllocateCode()), WmsAllocateOrderDetail::getAllocateCode, bo.getAllocateCode());

@ -1,30 +1,30 @@
package org.dromara.wms.service.impl;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
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.common.satoken.utils.LoginHelper;
import org.dromara.wms.domain.*;
import org.dromara.wms.domain.BaseMaterialCategory;
import org.dromara.wms.domain.WmsAllocateOrder;
import org.dromara.wms.domain.WmsBaseWarehouse;
import org.dromara.wms.domain.bo.WmsAllocateOrderBo;
import org.dromara.wms.domain.bo.WmsReturnOrderBo;
import org.dromara.wms.domain.vo.WmsAllocateOrderVo;
import org.dromara.wms.mapper.WmsAllocateOrderMapper;
import org.dromara.wms.mapper.WmsInstockOrderMapper;
import org.dromara.wms.service.IWmsAllocateOrderService;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.concurrent.atomic.AtomicInteger;
/**
@ -81,11 +81,13 @@ public class WmsAllocateOrderServiceImpl implements IWmsAllocateOrderService {
.leftJoin(BaseMaterialCategory.class, BaseMaterialCategory::getMaterialCategoryId, WmsAllocateOrder::getMaterialCategoryId)
.selectAs("a",WmsBaseWarehouse::getWarehouseCode,WmsAllocateOrderVo::getPlanWarehouseCode)
.selectAs("b",WmsBaseWarehouse::getWarehouseCode,WmsAllocateOrderVo::getTargetWarehouseCode)
.leftJoin(WmsBaseWarehouse.class,"a",WmsBaseWarehouse::getWarehouseId,WmsAllocateOrder::getPlanWarehouseId)
.leftJoin(WmsBaseWarehouse.class,"b",WmsBaseWarehouse::getWarehouseId,WmsAllocateOrder::getTargetWarehouseId);
// 关联表查询仓库编码和名称,只需要一次连接
.selectAs("a", WmsBaseWarehouse::getWarehouseCode, WmsAllocateOrderVo::getPlanWarehouseCode)
.selectAs("a", WmsBaseWarehouse::getWarehouseName, WmsAllocateOrderVo::getPlanWarehouseName)
.selectAs("b", WmsBaseWarehouse::getWarehouseCode, WmsAllocateOrderVo::getTargetWarehouseCode)
.selectAs("b", WmsBaseWarehouse::getWarehouseName, WmsAllocateOrderVo::getTargetWarehouseName)
.leftJoin(WmsBaseWarehouse.class, "a", WmsBaseWarehouse::getWarehouseId, WmsAllocateOrder::getPlanWarehouseId)
.leftJoin(WmsBaseWarehouse.class, "b", WmsBaseWarehouse::getWarehouseId, WmsAllocateOrder::getTargetWarehouseId);
lqw.eq(bo.getAoId() != null, WmsAllocateOrder::getAoId, bo.getAoId());
lqw.eq(StringUtils.isNotBlank(bo.getAllocateOrderCode()), WmsAllocateOrder::getAllocateOrderCode, bo.getAllocateOrderCode());

Loading…
Cancel
Save