This commit is contained in:
zjf committed 2025-02-20 16:17:31 +08:00
1 parent b7beca227d
commit de1ed3ae7e
10 files changed
+151 -17

No files matched your search

@@ -242,17 +242,6 @@ public class SmErpSpuEntity extends Model<SmErpSpuEntity> {
@Schema(description="联营扣率")
private BigDecimal jointDeductionRate;
/**
* 库存上限
*/
@Schema(description="库存上限")
private Integer inventoryUpperLimit;
/**
* 库存下限
*/
@Schema(description="库存下限")
private Integer inventoryLowerLimit;
/**
* 毛利率
@@ -332,4 +321,18 @@ public class SmErpSpuEntity extends Model<SmErpSpuEntity> {
@TableField(exist = false)
private List<SmErpUnitEntity> smErpUnitEntityList;
/**
* 库存上限
*/
@Schema(description="库存上限")
@TableField(exist = false)
private Integer inventoryUpperLimit;
/**
* 库存下限
*/
@Schema(description="库存下限")
@TableField(exist = false)
private Integer inventoryLowerLimit;
}
@@ -33,7 +33,7 @@ public class SmErpStockEntity extends Model<SmErpStockEntity> {
* 基础库存数量
*/
@Schema(description="基础库存数量")
private Integer baseStcok;
private Integer baseStock;
/**
* 乐观锁版本号
@@ -88,4 +88,19 @@ public class SmErpStockEntity extends Model<SmErpStockEntity> {
*/
@Schema(description="租户编号")
private Long tenantId;
@Schema(description="当前库存")
private Integer currentStock;
/**
* 库存上限
*/
@Schema(description="库存上限")
private Integer inventoryUpperLimit;
/**
* 库存下限
*/
@Schema(description="库存下限")
private Integer inventoryLowerLimit;
}
@@ -0,0 +1,15 @@
package com.bsd.pjcloud.supermarket.vo.stockwarn;
import com.bsd.pjcloud.supermarket.entity.SmErpSpuEntity;
import lombok.Data;
@Data
public class StockWarnVO extends SmErpSpuEntity {
private String warnType; // 预警类型字段
private Long spuId;
private Integer baseStock;
private Integer currentStock;
}
@@ -4,6 +4,8 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.common.core.util.BeanUtils;
@@ -20,6 +22,9 @@ import com.bsd.pjcloud.supermarket.entity.SmErpUnitEntity;
import com.bsd.pjcloud.supermarket.service.*;
import com.bsd.pjcloud.supermarket.vo.app.SupermarketAppSpuVo;
import com.bsd.pjcloud.supermarket.vo.erpspu.SmErpSpuSimpleVo;
import com.bsd.pjcloud.supermarket.vo.stockwarn.StockWarnVO;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
@@ -107,7 +112,9 @@ public class SmErpSpuController {
LambdaQueryWrapper<SmErpStockEntity> smErpStockEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
smErpStockEntityLambdaQueryWrapper.eq(SmErpStockEntity::getSpuId, id);
SmErpStockEntity smErpStockEntity = smErpStockService.list(smErpStockEntityLambdaQueryWrapper).get(0);
smErpSpuEntity.setStock(smErpStockEntity.getBaseStcok());
smErpSpuEntity.setStock(smErpStockEntity.getBaseStock());
smErpStockEntity.setInventoryLowerLimit(smErpStockEntity.getInventoryLowerLimit());
smErpStockEntity.setInventoryUpperLimit(smErpStockEntity.getInventoryUpperLimit());
List<SmErpUnitEntity> list = smErpUnitService.list(new LambdaQueryWrapper<SmErpUnitEntity>().eq(SmErpUnitEntity::getSpuId, id));
smErpSpuEntity.setSmErpUnitEntityList(list);
smErpSpuEntity.setSmErpAuxiliaryCodeEntityList(
@@ -185,6 +192,22 @@ public class SmErpSpuController {
return R.ok(bean);
}
/**
* 分页查询
* @param page 分页对象
* @param supermarketSpu 商品spu
* @return
*/
@Operation(summary = "分页查询库存预警" , description = "分页查询库存预警" )
@GetMapping("/warnStock/page" )
@PreAuthorize("@pms.hasPermission('supermarket_supermarketSpu_view')" )
public R getWarnStockPage(@ParameterObject Page page, @ParameterObject SmErpSpuEntity supermarketSpu) {
IPage iPage = smErpStockService.selectWarnStockWithSpu(page, supermarketSpu);
return R.ok(iPage);
}
// --------APP-----------------
@@ -1,11 +1,17 @@
package com.bsd.pjcloud.supermarket.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
import com.bsd.pjcloud.supermarket.entity.SmErpSpuEntity;
import com.bsd.pjcloud.supermarket.entity.SmErpStockEntity;
import com.bsd.pjcloud.supermarket.vo.stockwarn.StockWarnVO;
import com.github.houbb.heaven.annotation.reflect.Param;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SmErpStockMapper extends PjcloudBaseMapper<SmErpStockEntity> {
IPage<StockWarnVO> selectWarnStockWithSpu(Page<SmErpStockEntity> page, @Param("param") SmErpSpuEntity param);
}
@@ -1,8 +1,16 @@
package com.bsd.pjcloud.supermarket.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.supermarket.entity.SmErpSpuEntity;
import com.bsd.pjcloud.supermarket.entity.SmErpStockEntity;
import com.bsd.pjcloud.supermarket.vo.stockwarn.StockWarnVO;
import com.github.houbb.heaven.annotation.reflect.Param;
public interface SmErpStockService extends IService<SmErpStockEntity> {
IPage<StockWarnVO> selectWarnStockWithSpu(Page<SmErpStockEntity> page,SmErpSpuEntity param);
}
@@ -61,7 +61,9 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
//库存表
SmErpStockEntity smErpStockEntity = new SmErpStockEntity();
smErpStockEntity.setSpuId(supermarketSpu.getId());
smErpStockEntity.setBaseStcok(supermarketSpu.getStock());
smErpStockEntity.setBaseStock(supermarketSpu.getStock());
smErpStockEntity.setInventoryLowerLimit(supermarketSpu.getInventoryLowerLimit());
smErpStockEntity.setInventoryUpperLimit(supermarketSpu.getInventoryUpperLimit());
smErpStockMapper.insert(smErpStockEntity);
//新增包装类型
@@ -94,7 +96,9 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
LambdaQueryWrapper<SmErpStockEntity> smErpStockEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
smErpStockEntityLambdaQueryWrapper.eq(SmErpStockEntity::getSpuId, supermarketSpu.getId());
SmErpStockEntity smErpStockEntity = new SmErpStockEntity();
smErpStockEntity.setBaseStcok(stock);
smErpStockEntity.setBaseStock(stock);
smErpStockEntity.setInventoryLowerLimit(supermarketSpu.getInventoryLowerLimit());
smErpStockEntity.setInventoryUpperLimit(supermarketSpu.getInventoryUpperLimit());
smErpStockMapper.update(smErpStockEntity,smErpStockEntityLambdaQueryWrapper);
//新增包装类型
@@ -1,9 +1,13 @@
package com.bsd.pjcloud.supermarket.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.supermarket.entity.SmErpSpuEntity;
import com.bsd.pjcloud.supermarket.entity.SmErpStockEntity;
import com.bsd.pjcloud.supermarket.mapper.SmErpStockMapper;
import com.bsd.pjcloud.supermarket.service.SmErpStockService;
import com.bsd.pjcloud.supermarket.vo.stockwarn.StockWarnVO;
import org.springframework.stereotype.Service;
/**
* 商品包装单位(sku)
@@ -13,4 +17,9 @@ import org.springframework.stereotype.Service;
*/
@Service
public class SmErpStockServiceImpl extends ServiceImpl<SmErpStockMapper, SmErpStockEntity> implements SmErpStockService {
@Override
public IPage<StockWarnVO> selectWarnStockWithSpu(Page<SmErpStockEntity> page, SmErpSpuEntity param) {
return baseMapper.selectWarnStockWithSpu(page, param);
}
}
@@ -5,7 +5,7 @@
<resultMap id="smErpStockMap" type="com.bsd.pjcloud.supermarket.entity.SmErpStockEntity">
<id property="id" column="id"/>
<result property="baseStcok" column="base_stcok"/>
<result property="baseStock" column="base_stcok"/>
<result property="version" column="version"/>
<result property="spuId" column="spu_id"/>
<result property="createBy" column="create_by"/>
@@ -14,5 +14,56 @@
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
<result property="tenantId" column="tenant_id"/>
<result property="currentStock" column="current_stock"/>
<result property="inventoryUpperLimit" column="inventory_upper_limit"/>
<result property="inventoryLowerLimit" column="inventory_lower_limit"/>
</resultMap>
<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"/>
<!-- 预警类型计算字段 -->
<result column="warn_type" property="warnType"/>
<!-- SPU表关联字段 -->
<result column="product_code" property="productCode"/>
<result column="product_name" property="productName"/>
<result column="barcode" property="barcode"/>
</resultMap>
<select id="selectWarnStockWithSpu" resultMap="stockWarnResultMap">
SELECT
stock.*,
spu.product_code,
spu.product_name,
spu.barcode,
CASE
WHEN (stock.base_stock + stock.current_stock) > stock.inventory_upper_limit THEN 'UPPER_LIMIT'
ELSE 'LOWER_LIMIT'
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) NOT BETWEEN stock.inventory_lower_limit AND stock.inventory_upper_limit
<!-- 动态查询条件 -->
<if test="param.productCode != null and param.productCode != ''">
AND spu.product_code = #{param.productCode}
</if>
<if test="param.barcode != null and param.barcode != ''">
AND spu.barcode = #{param.barcode}
</if>
<if test="param.productName != null and param.productName != ''">
AND spu.product_name LIKE CONCAT('%', #{param.productName}, '%')
</if>
</where>
ORDER BY stock.id DESC
</select>
</mapper>
@@ -378,7 +378,7 @@ public class SysUserController {
return R.ok(userService.list(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getPhone, mobile)));
}
@GetMapping("/ getSimpleUserAll")
@GetMapping("/getSimpleUserAll")
@Schema(description = "简要用户信息")
public R<List<SimpleUserAllListVO>> getSimpleUserAllList(@RequestParam(value = "mobile",required = false) String mobile,
@RequestParam(value = "name",required = false) String name){