This commit is contained in:
zjf committed 2025-02-24 18:57:55 +08:00
1 parent 944422a4c0
commit 1c935a3e65
8 files changed
+53 -21

No files matched your search

@@ -45,7 +45,7 @@ public class SmErpStockEntity extends Model<SmErpStockEntity> {
* spuID
*/
@Schema(description="spuID")
private Long spuId;
private Long erpSpuId;
/**
* 创建者
@@ -142,4 +142,8 @@ public class SmErpUnitEntity extends Model<SmErpUnitEntity> {
*/
@Schema(description="租户编号")
private Long tenantId;
@Schema(description = "是否是基础库存,默认0否,1是")
private String isBase;
}
@@ -110,7 +110,7 @@ public class SmErpSpuController {
SmErpSpuEntity smErpSpuEntity = smErpSpuService.getById(id);
//库存
LambdaQueryWrapper<SmErpStockEntity> smErpStockEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
smErpStockEntityLambdaQueryWrapper.eq(SmErpStockEntity::getSpuId, id);
smErpStockEntityLambdaQueryWrapper.eq(SmErpStockEntity::getErpSpuId, id);
SmErpStockEntity smErpStockEntity = smErpStockService.list(smErpStockEntityLambdaQueryWrapper).get(0);
smErpSpuEntity.setStock(smErpStockEntity.getBaseStock());
smErpStockEntity.setInventoryLowerLimit(smErpStockEntity.getInventoryLowerLimit());
@@ -247,6 +247,7 @@ public class SmErpSpuController {
//-------------------APP-----------------
/**
@@ -292,7 +293,11 @@ public class SmErpSpuController {
if (spu == null) {
R.failed("商品不存在");
}
if (spu.getStock()<Math.abs(incrCount)){
LambdaQueryWrapper<SmErpStockEntity> smErpStockEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
smErpStockEntityLambdaQueryWrapper.eq(SmErpStockEntity::getErpSpuId, spuId);
SmErpStockEntity smErpStockEntity = smErpStockService.getOne(smErpStockEntityLambdaQueryWrapper);
if (smErpStockEntity.getCurrentStock()<Math.abs(incrCount)){
return R.failed("库存不足");
}
return R.ok();
@@ -9,12 +9,10 @@ import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.supermarket.dto.SupermarketSpuQueryDTO;
import com.bsd.pjcloud.supermarket.dto.SupermarketSpuUpdateStockReqDTO;
import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanDTO;
import com.bsd.pjcloud.supermarket.entity.SmErpAuxiliaryCodeEntity;
import com.bsd.pjcloud.supermarket.entity.SmErpSpuEntity;
import com.bsd.pjcloud.supermarket.entity.SmErpStockEntity;
import com.bsd.pjcloud.supermarket.entity.SmErpUnitEntity;
import com.bsd.pjcloud.supermarket.entity.*;
import com.bsd.pjcloud.supermarket.mapper.SmErpSpuMapper;
import com.bsd.pjcloud.supermarket.mapper.SmErpStockMapper;
import com.bsd.pjcloud.supermarket.mapper.SmSpuMapper;
import com.bsd.pjcloud.supermarket.service.SmErpAuxiliaryCodeService;
import com.bsd.pjcloud.supermarket.service.SmErpSpuService;
import com.bsd.pjcloud.supermarket.service.SmErpUnitService;
@@ -52,6 +50,8 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
private final SmErpStockMapper smErpStockMapper;
private final SmSpuMapper spuMapper;
@Override
@Transactional
public R saveSpu(SmErpSpuEntity supermarketSpu) {
@@ -60,8 +60,9 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
//库存表
SmErpStockEntity smErpStockEntity = new SmErpStockEntity();
smErpStockEntity.setSpuId(supermarketSpu.getId());
smErpStockEntity.setErpSpuId(supermarketSpu.getId());
smErpStockEntity.setBaseStock(supermarketSpu.getStock());
smErpStockEntity.setCurrentStock(supermarketSpu.getStock());
smErpStockEntity.setInventoryLowerLimit(supermarketSpu.getInventoryLowerLimit());
smErpStockEntity.setInventoryUpperLimit(supermarketSpu.getInventoryUpperLimit());
smErpStockMapper.insert(smErpStockEntity);
@@ -93,10 +94,19 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
baseMapper.updateById(supermarketSpu);
Integer stock = supermarketSpu.getStock();
//如果更新商品的期初库存,就需要计算后期商品出入库单据进行了多少数据
LambdaQueryWrapper<SmErpStockEntity> selectWStockWrapper = new LambdaQueryWrapper<>();
selectWStockWrapper.eq(SmErpStockEntity::getErpSpuId, supermarketSpu.getId());
SmErpStockEntity queryStock = smErpStockMapper.selectOne(selectWStockWrapper);
//得到单据进出的库存数量
int inventoryStockNum = queryStock.getCurrentStock() - queryStock.getBaseStock();
LambdaQueryWrapper<SmErpStockEntity> smErpStockEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
smErpStockEntityLambdaQueryWrapper.eq(SmErpStockEntity::getSpuId, supermarketSpu.getId());
smErpStockEntityLambdaQueryWrapper.eq(SmErpStockEntity::getErpSpuId, supermarketSpu.getId());
SmErpStockEntity smErpStockEntity = new SmErpStockEntity();
smErpStockEntity.setBaseStock(stock);
//单据进出的+期初
smErpStockEntity.setCurrentStock(stock+inventoryStockNum);
smErpStockEntity.setInventoryLowerLimit(supermarketSpu.getInventoryLowerLimit());
smErpStockEntity.setInventoryUpperLimit(supermarketSpu.getInventoryUpperLimit());
smErpStockMapper.update(smErpStockEntity,smErpStockEntityLambdaQueryWrapper);
@@ -195,12 +205,25 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
@Override
public Object getSupermarketSpuAppDetailById(Long id) {
SmErpSpuEntity smErpSpuEntity = baseMapper.selectById(id);
List<SmErpUnitEntity> smErpUnitEntityList = smErpUnitService.list(new LambdaQueryWrapper<SmErpUnitEntity>().eq(SmErpUnitEntity::getSpuId, id));
SmSpuEntity smSpuEntity = spuMapper.selectById(id);
if (smSpuEntity == null) {
return R.failed("商品不存在");
}
SmErpSpuEntity smErpSpuEntity = baseMapper.selectById(smSpuEntity.getErpSpuId());
List<SmErpUnitEntity> smErpUnitEntityList = smErpUnitService.list(new LambdaQueryWrapper<SmErpUnitEntity>().eq(SmErpUnitEntity::getSpuId, smErpSpuEntity.getId()));
LambdaQueryWrapper<SmErpStockEntity> smErpStockEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
smErpStockEntityLambdaQueryWrapper.eq(SmErpStockEntity::getErpSpuId, smErpSpuEntity.getId());
SmErpStockEntity smErpStockEntity = smErpStockMapper.selectOne(smErpStockEntityLambdaQueryWrapper);
List<SmErpUnitEntity> unitEntities = smErpUnitEntityList.stream().filter(supermarketUnitEntity -> supermarketUnitEntity.getStatus() == 0).collect(Collectors.toList());
SupermarketAppSpuDetailsVo supermarketAppSpuVo = BeanUtils.toBean(smErpSpuEntity, SupermarketAppSpuDetailsVo.class);
List<SupermarketAppUnitVo> supermarketAppUnitVos = BeanUtils.toBean(unitEntities, SupermarketAppUnitVo.class);
supermarketAppSpuVo.setSkuList(supermarketAppUnitVos);
supermarketAppSpuVo.setStock(smErpStockEntity.getCurrentStock());
return supermarketAppSpuVo;
}
@@ -43,11 +43,11 @@ public class SmErpStockServiceImpl extends ServiceImpl<SmErpStockMapper, SmErpSt
for (UpdateStockDTO item : updateStockDTOS) {
// 1. 先查询当前版本号
LambdaQueryWrapper<SmErpStockEntity> smErpStockEntityLambdaQueryWrapper = new LambdaQueryWrapper<SmErpStockEntity>();
smErpStockEntityLambdaQueryWrapper.eq(SmErpStockEntity::getSpuId,item.getId());
smErpStockEntityLambdaQueryWrapper.eq(SmErpStockEntity::getErpSpuId,item.getId());
SmErpStockEntity smErpStockEntity = baseMapper.selectOne(smErpStockEntityLambdaQueryWrapper);
LambdaQueryWrapper<SmErpStockEntity> updateStockWithLockWrapper = new LambdaQueryWrapper<SmErpStockEntity>();
updateStockWithLockWrapper.eq(SmErpStockEntity::getSpuId,item.getId());
updateStockWithLockWrapper.eq(SmErpStockEntity::getErpSpuId,item.getId());
updateStockWithLockWrapper.eq(SmErpStockEntity::getVersion,smErpStockEntity.getVersion());
SmErpStockEntity updateSmErpStockEntity = new SmErpStockEntity();
updateSmErpStockEntity.setCurrentStock(smErpStockEntity.getCurrentStock()+item.getIncrCount());
@@ -7,7 +7,7 @@
<id property="id" column="id"/>
<result property="baseStock" column="base_stcok"/>
<result property="version" column="version"/>
<result property="spuId" column="spu_id"/>
<result property="erpSpuId" column="erp_spu_id"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
@@ -21,9 +21,6 @@
<resultMap id="stockWarnResultMap" type="com.bsd.pjcloud.supermarket.vo.stockwarn.StockWarnVO">
<!-- 库存表基础字段 -->
<id column="id" property="id"/>
<result column="spu_id" property="spuId"/>
<result column="base_stock" property="baseStock"/>
<result column="current_stock" property="currentStock"/>
<result column="inventory_upper_limit" property="inventoryUpperLimit"/>
<result column="inventory_lower_limit" property="inventoryLowerLimit"/>
@@ -51,14 +48,14 @@
spu.category_id,
spu.id,
CASE
WHEN (stock.base_stock + stock.current_stock) > stock.inventory_upper_limit THEN '2'
WHEN (stock.current_stock) > stock.inventory_upper_limit THEN '2'
ELSE '1'
END AS warn_type
FROM sm_erp_stock stock
LEFT JOIN sm_erp_spu spu ON stock.spu_id = spu.id
<where>
<!-- 库存预警条件 -->
(stock.base_stock + stock.current_stock) &lt; stock.inventory_lower_limit or (stock.base_stock + stock.current_stock) > stock.inventory_upper_limit
(stock.current_stock) &lt; stock.inventory_lower_limit or ( stock.current_stock) > stock.inventory_upper_limit
<if test="param.productCode != null and param.productCode != ''">
AND spu.product_code = #{param.productCode}
@@ -21,6 +21,7 @@
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
<result property="tenantId" column="tenant_id"/>
<result property="isBase" column="is_base"/>
</resultMap>
<resultMap id="SupermarketUnitWithSpuVoMap" type="com.bsd.pjcloud.supermarket.vo.erp.SmErpUnitWithSpuVo">
@@ -34,13 +34,15 @@
</select>
<select id="getAppPage" resultType="com.bsd.pjcloud.supermarket.vo.app.SupermarketAppSpuVo">
SELECT esp.product_name, esp.pic_url, esp.stock, esp.sales_count, esp.retail_price, esp.promotion_price
SELECT sp.id,sp.slider_pic_urls,esp.product_name, esp.pic_url,stock.current_stock as stock, esp.sales_count, esp.retail_price, esp.promotion_price
FROM `sm_spu` sp
LEFT JOIN sm_erp_spu esp
on sp.erp_spu_id = esp.id
LEFT JOIN sm_erp_stock stock
on esp.id = stock.erp_spu_id
<where>
esp.status = 0 and esp.merchant_id=${supermarketSpuQueryDTO.merchantId}
<if test="smspu.productName != null and smspu.productName != ''">
<if test="supermarketSpuQueryDTO.productName != null and supermarketSpuQueryDTO.productName != ''">
and esp.product_name like concat('%', #{supermarketSpuQueryDTO.productName}, '%')
</if>
</where>