feat(wms): 新增库存明细统计查询接口

dev
wanghao 1 month ago
parent a9c263a4ea
commit 2c01304202

@ -45,6 +45,11 @@ public class WmsInventoryDetailsController extends BaseController {
public TableDataInfo<WmsInventoryDetailsVo> list(WmsInventoryDetailsBo bo, PageQuery pageQuery) {
return wmsInventoryDetailsService.queryPageList(bo, pageQuery);
}
@SaCheckPermission("wms:inventoryDetails:list")
@GetMapping("/listCount")
public TableDataInfo<WmsInventoryDetailsVo> listCount(WmsInventoryDetailsBo bo, PageQuery pageQuery) {
return wmsInventoryDetailsService.listCount(bo, pageQuery);
}
/**
*

@ -79,22 +79,39 @@ public class WmsInStockDetails extends TenantEntity {
*/
private String delFlag;
@TableField(exist = false)
/**
*
*/
private String productCode;
@TableField(exist = false)
/**
*
*/
private String productName;
@TableField(exist = false)
private String externalBrand;
/* @TableField(exist = false)
/// SAP物料编码
private String materialCode;
@TableField(exist = false)
/**
*//**
* SAP
*/
*//*
private String materialName;
@TableField(exist = false)
*/
/**
*
*/
*//*
private String materialBrand;
@TableField(exist = false)
private String materialModel;
private String materialModel;*/
@TableField(exist = false)
/**

@ -51,6 +51,7 @@ public class WmsInventoryDetails extends TenantEntity {
*
*/
private Double inventoryAmount;
private Double startInventoryAmount;
/**
*
@ -70,21 +71,7 @@ public class WmsInventoryDetails extends TenantEntity {
@TableField(exist = false)
private Double useAmount;
@TableField(exist = false)
/**
* SAP
*/
private String materialCode;
@TableField(exist = false)
/**
* SAP
*/
private String materialName;
@TableField(exist = false)
/**
*
*/
private String materialBrand;
@TableField(exist = false)
/**
*
@ -110,4 +97,25 @@ public class WmsInventoryDetails extends TenantEntity {
* ID
*/
private Long projectId;
@TableField(exist = false)
/**
*
*/
private String productCode;
@TableField(exist = false)
/**
*
*/
private String productName;
@TableField(exist = false)
/**
*
*/
private String productSpe;
@TableField(exist = false)
private String externalBrand;
}

@ -68,6 +68,14 @@ public class WmsInventoryDetailsBo extends BaseEntity {
* ID
*/
private Long projectId;
/**
*
*/
private String productCode;
/**
*
*/
private String productName;
private String externalBrand;
}

@ -91,26 +91,35 @@ public class WmsInStockDetailsVo implements Serializable {
*/
@ExcelProperty(value = "更新时间")
private Date updateTime;
/**
*
*/
private String productCode;
/**
* SAP
*
*/
private String productName;
private String externalBrand;
/* *//**
* SAP
*//*
private String materialCode;
/**
*//**
* SAP
*/
*//*
private String materialName;
/**
*//**
*
*/
*//*
private String materialBrand;
/**
*//**
*
*/
private String materialModel;
*//*
private String materialModel;*/
/**
*
*/

@ -123,4 +123,19 @@ public class WmsInventoryDetailsVo implements Serializable {
* ID
*/
private Long projectId;
/**
*
*/
private String productCode;
/**
*
*/
private String productName;
private String externalBrand;
/**
*
*/
private String productSpe;
}

@ -68,4 +68,6 @@ public interface IWmsInventoryDetailsService {
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
void insertList(List<WmsInventoryDetails> inventoryDetailsList);
TableDataInfo<WmsInventoryDetailsVo> listCount(WmsInventoryDetailsBo bo, PageQuery pageQuery);
}

@ -16,7 +16,6 @@ import org.dromara.wms.domain.WmsInStockDetails;
import org.dromara.wms.domain.WmsInventoryDetails;
import org.dromara.wms.domain.bo.WmsInStockBillBo;
import org.dromara.wms.domain.vo.WmsInStockBillVo;
import org.dromara.wms.domain.vo.WmsWarehouseInfoVo;
import org.dromara.wms.mapper.WmsInStockBillMapper;
import org.dromara.wms.mapper.WmsInStockDetailsMapper;
import org.dromara.wms.service.IWmsInStockBillService;
@ -42,9 +41,10 @@ public class WmsInStockBillServiceImpl implements IWmsInStockBillService {
private final WmsInStockBillMapper baseMapper;
private final WmsInStockDetailsMapper wmsInStockDetailsMapper;
private RemoteCodeRuleService remoteCodeRuleService;
private final IWmsInventoryDetailsService inventoryService;
private final IWmsWarehouseInfoService warehouseService;
@DubboReference
private RemoteCodeRuleService remoteCodeRuleService;
@DubboReference(timeout = 30000)//超时时间
private RemoteWorkflowService remoteWorkflowService;//流程
@ -111,36 +111,30 @@ public class WmsInStockBillServiceImpl implements IWmsInStockBillService {
public Boolean insertByBo(WmsInStockBillBo bo) {
WmsInStockBill add = MapstructUtils.convert(bo, WmsInStockBill.class);
add.setInStockCode(remoteCodeRuleService.selectCodeRuleCode("1005"));
Long inStockBillId = add.getInStockBillId();
// WmsWarehouseInfoVo wmsWarehouseInfoVo = warehouseService.queryById(add.getWarehouseId());
// boolean insertInventortState = wmsWarehouseInfoVo.getWmsStoreType().equals("1");
// add.setInStockBillStatus(insertInventortState ? "3" : "4");
// 查询创建时间为今天的入库单条数
// int count = baseMapper.selectCountNowInStore();
// String dateTimeNow = DateUtils.dateTimeNow(FormatsType.YYYYMMDD);
// if (count > 0) {
// String tag = String.format("%03d", count + 1);
// add.setInStockCode("RK" + dateTimeNow + "-" + tag);
// } else {
// add.setInStockCode("RK" + dateTimeNow + "-" + "001");
// }
add.setInStockBillStatus("3");
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
Long inStockBillId = add.getInStockBillId();
List<WmsInStockDetails> inStockDetailsList = bo.getInStockDetailsList();
List<WmsInventoryDetails> inventoryDetailsList = new ArrayList<>(inStockDetailsList.size());//库存集合
Long projectId = bo.getProjectId();// 项目ID
inStockDetailsList.forEach(item -> {
item.setInStockBillId(inStockBillId); // 设置入库单明细的入库单ID
item.setProjectId(bo.getProjectId()); // 关联项目
// if (insertInventortState) {
// WmsInventoryDetails inventoryDetails = MapstructUtils.convert(item, WmsInventoryDetails.class);
// inventoryDetails.setInventoryAmount(item.getInStockAmount());
// inventoryDetailsList.add(inventoryDetails);
// }
item.setProjectId(projectId); // 关联项目
WmsInventoryDetails inventory = new WmsInventoryDetails();
inventory.setWarehouseId(item.getWarehouseId()); // 关联仓库
inventory.setProjectId(projectId); // 关联项目
inventory.setBatchNumber(item.getBatchNumber()); // 关联批次号
inventory.setMaterielId(item.getMaterialId()); // 关联物料
inventory.setUnitPrice(item.getUnitPrice());
Double inStockAmount = item.getInStockAmount();
inventory.setInventoryAmount(inStockAmount);
inventory.setStartInventoryAmount(inStockAmount); // 初始库存数量
inventoryDetailsList.add(inventory);
});
wmsInStockDetailsMapper.insert(inStockDetailsList); //插入子表
// if (insertInventortState) {
// inventoryService.insertList(inventoryDetailsList); //插入库存
// }
wmsInStockDetailsMapper.insert(inStockDetailsList); //插入子表
inventoryService.insertList(inventoryDetailsList); //插入库存
}
return flag;
}

@ -9,6 +9,7 @@ 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.BaseMaterialInfo;
import org.dromara.wms.domain.WmsBaseProduct;
import org.dromara.wms.domain.WmsInStockDetails;
import org.dromara.wms.domain.WmsWarehouseInfo;
import org.dromara.wms.domain.bo.WmsInStockDetailsBo;
@ -74,8 +75,8 @@ public class WmsInStockDetailsServiceImpl implements IWmsInStockDetailsService {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<WmsInStockDetails> lqw = JoinWrappers.lambda(WmsInStockDetails.class)
.selectAll(WmsInStockDetails.class)
.leftJoin(BaseMaterialInfo.class, BaseMaterialInfo::getMaterialId, WmsInStockDetails::getMaterialId)
.select(BaseMaterialInfo::getMaterialCode, BaseMaterialInfo::getMaterialName, BaseMaterialInfo::getMaterialModel)
.leftJoin(WmsBaseProduct.class, WmsBaseProduct::getProductId, WmsInStockDetails::getMaterialId)
.select(WmsBaseProduct::getProductCode, WmsBaseProduct::getProductName, WmsBaseProduct::getProductSpe)
.leftJoin(WmsWarehouseInfo.class, WmsWarehouseInfo::getWarehouseId, WmsInStockDetails::getWarehouseId)
.select(WmsWarehouseInfo::getWarehouseName)
.eq(bo.getInStockBillId() != null, WmsInStockDetails::getInStockBillId, bo.getInStockBillId())

@ -8,7 +8,7 @@ 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.BaseMaterialInfo;
import org.dromara.wms.domain.WmsBaseProduct;
import org.dromara.wms.domain.WmsInventoryDetails;
import org.dromara.wms.domain.WmsWarehouseInfo;
import org.dromara.wms.domain.bo.WmsInventoryDetailsBo;
@ -19,7 +19,6 @@ import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
import java.util.WeakHashMap;
/**
* Service
@ -58,6 +57,31 @@ public class WmsInventoryDetailsServiceImpl implements IWmsInventoryDetailsServi
return TableDataInfo.build(result);
}
@Override
public TableDataInfo<WmsInventoryDetailsVo> listCount(WmsInventoryDetailsBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<WmsInventoryDetails> lqw = buildCountWrapper(bo);
Page<WmsInventoryDetailsVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
private MPJLambdaWrapper<WmsInventoryDetails> buildCountWrapper(WmsInventoryDetailsBo bo) {
// Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<WmsInventoryDetails> lqw = JoinWrappers.lambda(WmsInventoryDetails.class)
.selectAs("sum(inventory_amount) ", WmsInventoryDetails::getInventoryAmount)
.selectAs("sum(locked_amount)", WmsInventoryDetails::getLockedAmount)
.select(WmsInventoryDetails::getWarehouseId, WmsInventoryDetails::getMaterielId)
.leftJoin(WmsBaseProduct.class, WmsBaseProduct::getProductId, WmsInventoryDetails::getMaterielId) // 物料
.select(WmsBaseProduct::getProductName, WmsBaseProduct::getProductCode, WmsBaseProduct::getExternalBrand,WmsBaseProduct::getProductSpe) // 物料名称、编码、品牌
.leftJoin(WmsWarehouseInfo.class, WmsWarehouseInfo::getWarehouseId, WmsInventoryDetails::getWarehouseId) // 仓库
.select(WmsWarehouseInfo::getWarehouseName)
.eq(bo.getWarehouseId() != null, WmsInventoryDetails::getWarehouseId, bo.getWarehouseId()) // 仓库id
.like(StringUtils.isNotBlank(bo.getProductCode()), WmsBaseProduct::getProductCode, bo.getProductCode()) // 物料编码
.like(StringUtils.isNotBlank(bo.getProductName()), WmsBaseProduct::getProductName, bo.getProductName()) // 物料名称
.eq(StringUtils.isNotBlank(bo.getExternalBrand()), WmsBaseProduct::getExternalBrand, bo.getExternalBrand()) // 品牌
.groupBy(WmsInventoryDetails::getMaterielId, WmsInventoryDetails::getWarehouseId);
return lqw;
}
/**
*
*
@ -70,14 +94,15 @@ public class WmsInventoryDetailsServiceImpl implements IWmsInventoryDetailsServi
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<WmsInventoryDetails> buildQueryWrapper(WmsInventoryDetailsBo bo) {
// Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<WmsInventoryDetails> lqw = JoinWrappers.lambda(WmsInventoryDetails.class)
.selectAll(WmsInventoryDetails.class)
.selectAs("inventory_amount - locked_amount", WmsInventoryDetailsVo::getUseAmount)
// .selectAs("inventory_amount - locked_amount", WmsInventoryDetailsVo::getUseAmount)
.eq(StringUtils.isNotBlank(bo.getLocationCode()), WmsInventoryDetails::getLocationCode, bo.getLocationCode())
.eq(bo.getWarehouseId() != null, WmsInventoryDetails::getWarehouseId, bo.getWarehouseId())
.like(bo.getMaterielId() != null, WmsInventoryDetails::getMaterielId, bo.getMaterielId())
.eq(bo.getMaterielId() != null, WmsInventoryDetails::getMaterielId, bo.getMaterielId())
.eq(StringUtils.isNotBlank(bo.getBatchNumber()), WmsInventoryDetails::getBatchNumber, bo.getBatchNumber())
.eq(bo.getInventoryAmount() != null, WmsInventoryDetails::getInventoryAmount, bo.getInventoryAmount())
.eq(bo.getLockedAmount() != null, WmsInventoryDetails::getLockedAmount, bo.getLockedAmount())
@ -85,12 +110,11 @@ public class WmsInventoryDetailsServiceImpl implements IWmsInventoryDetailsServi
.leftJoin(WmsWarehouseInfo.class, WmsWarehouseInfo::getWarehouseId, WmsInventoryDetails::getWarehouseId)
.select(WmsWarehouseInfo::getWarehouseName, WmsWarehouseInfo::getWarehouseCode)
// 关联物料信息
.leftJoin(BaseMaterialInfo.class, BaseMaterialInfo::getMaterialId, WmsInventoryDetails::getMaterielId)
.select(BaseMaterialInfo::getMaterialName, BaseMaterialInfo::getMaterialCode, BaseMaterialInfo::getMaterialBrand, BaseMaterialInfo::getMaterialModel)
;
.leftJoin(WmsBaseProduct.class, WmsBaseProduct::getProductId, WmsInventoryDetails::getMaterielId)
.select(WmsBaseProduct::getProductCode, WmsBaseProduct::getProductName, WmsBaseProduct::getExternalBrand, WmsBaseProduct::getProductSpe)
.like(StringUtils.isNotBlank(bo.getProductCode()), WmsBaseProduct::getProductCode, bo.getProductCode())
.like(StringUtils.isNotBlank(bo.getProductName()), WmsBaseProduct::getProductName, bo.getProductName())
.eq(StringUtils.isNotBlank(bo.getExternalBrand()), WmsBaseProduct::getExternalBrand, bo.getExternalBrand());
return lqw;
}

Loading…
Cancel
Save