This commit is contained in:
dzc committed 2025-02-21 11:06:20 +08:00
commit c2a8b38c7d
29 files changed
+890 -45

No files matched your search

@@ -72,6 +72,8 @@ public class ErpCgDDSaveDTO {
private String orderNumber;
@Schema(description="关联码")
private String linkCode;
/**
* @Link SmCgPlanSaveItemDTO
*/
@@ -0,0 +1,26 @@
package com.bsd.pjcloud.supermarket.dto.inventoryrecords;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDate;
@Data
@Schema(description = "分页查询采购订单条件")
public class CGDdLinkQueryDTO {
/**
* 采购计划编号
*/
@Schema(description="采购订单编号")
private String code;
/**
* 采购计划单据日期
*/
@Schema(description="单据日期")
private LocalDate dDate;
}
@@ -0,0 +1,86 @@
package com.bsd.pjcloud.supermarket.dto.inventoryrecords;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDate;
import java.util.List;
/**
*
* 新增一个采购计划
*/
@Data
@Schema(description = "采购计划保存对象")
public class InventoryRecordSaveDTO {
/**
* 采购计划编号
*/
@Schema(description="编号")
private String inventoryCode;
/**
* 采购计划单据日期
*/
@Schema(description="单据日期")
private LocalDate inventoryDate;
/**
* 仓库id
*/
@Schema(description="仓库id")
private String warehouseId;
/**
* 经办人id
*/
@Schema(description="经办人id")
private Long handlerUserId;
/**
* 累计进货数量
*/
@Schema(description="累计进货数量")
private Integer totalNumber;
/**
* 累计总金额
*/
@Schema(description="累计总金额")
private Integer totalAmount;
/**
* 货商
*/
@Schema(description="货商")
private Long supplierId;
/**
* 备注
*/
@Schema(description="备注")
private String remark;
/**
* 订单编号
*/
@Schema(description="订单编号")
private String orderNumber;
@Schema(description="关联码")
private String linkCode;
/**
* @Link SmCgPlanSaveItemDTO
*/
@Schema(description="采购计划-item")
private List<InventoryRecordSaveItemDTO> items;
}
@@ -0,0 +1,54 @@
package com.bsd.pjcloud.supermarket.dto.inventoryrecords;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 采购计划-item
*
* @author zjf
* @date 2025-02-11 17:11:41
*/
@Data
@Schema(description = "采购计划-item")
public class InventoryRecordSaveItemDTO {
/**
* 库存商品id
*/
@Schema(description="库存商品id")
private Long erpSpuId;
/**
* 数量
*/
@Schema(description="数量")
private Integer quantity;
/**
* 进价
*/
@Schema(description="进价")
private Integer unitPrice;
/**
* 累计总金额
*/
@Schema(description="累计总金额")
private Integer totalAmount;
/**
* 备注
*/
@Schema(description="备注")
private String remark;
/**
* 包装单位id
*/
@Schema(description="包装单位id")
private Long unitId;
}
@@ -0,0 +1,37 @@
package com.bsd.pjcloud.supermarket.dto.inventoryrecords;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 更新库存 DTO
*
* @author LeeYan9
* @since 2022-08-26
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UpdateStockDTO {
/**
* 商品 SKU 编号
*/
@NotNull(message = "商品 SPU 编号不能为空")
private Long id;
/**
* 库存变化数量
*
* 正数:增加库存
* 负数:扣减库存
*/
@NotNull(message = "库存变化数量不能为空")
private Integer incrCount;
}
@@ -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,102 @@
package com.bsd.pjcloud.supermarket.vo.inventoryrecord;
import com.bsd.pjcloud.common.core.util.MoneyDeserializer;
import com.bsd.pjcloud.common.core.util.MoneySerializer;
import com.bsd.pjcloud.supermarket.vo.cgplan.ErpUnitVo;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
/**
* 采购计划-item
*
* @author zjf
* @date 2025-02-11 17:11:41
*/
@Data
@Schema(description = "采购计划-item")
public class InventoryRecordItemVo {
@Schema(description = "id")
private Long id;
/**
* 库存商品id
*/
@Schema(description="库存商品id")
private Long erpSpuId;
/**
* 主表id
*/
@Schema(description="主表id")
private Long inventoryId;
/**
* 数量
*/
@Schema(description="数量")
private Integer quantity;
/**
* 进价
*/
@Schema(description="进价")
@JsonSerialize(using = MoneySerializer.class) // 分 -> 元
@JsonDeserialize(using = MoneyDeserializer.class) // 元 -> 分
private Integer unitPrice;
/**
* 累计总金额
*/
@Schema(description="累计总金额")
@JsonSerialize(using = MoneySerializer.class) // 分 -> 元
@JsonDeserialize(using = MoneyDeserializer.class) // 元 -> 分
private Integer totalAmount;
/**
* 备注
*/
@Schema(description="备注")
private String remark;
/**
* 包装单位id
*/
@Schema(description="包装单位id")
private Long unitId;
/**
* 规格
*/
@Schema(description="规格")
private String spec;
/**
* 单位
*/
@Schema(description="单位")
private String unit;
/**
* 装数
*/
@Schema(description="装数")
private Integer packageNum;
/**
* 进价(分为单位)
*/
@Schema(description="进价(分为单位)")
@JsonSerialize(using = MoneySerializer.class) // 分 -> 元
@JsonDeserialize(using = MoneyDeserializer.class) // 元 -> 分
private Integer purchasePrice;
@Schema(description = "包装对象集合对象")
private List<ErpUnitVo> erpUnitVos;
}
@@ -0,0 +1,72 @@
package com.bsd.pjcloud.supermarket.vo.inventoryrecord;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "采购根据id查询-编辑回显 vo")
@Data
public class InventoryRecordVo {
@Schema(description ="id")
private Long id;
/**
* 采购计划编号
*/
@Schema(description="编号")
private String inventoryCode;
/**
* 采购计划单据日期
*/
@Schema(description="单据日期")
private LocalDate inventoryDate;
/**
* 经办人id
*/
@Schema(description="经办人id")
private Long handlerUserId;
/**
* 备注
*/
@Schema(description="备注")
private String remark;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description="创建人")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description="创建时间")
private LocalDateTime createTime;
/**
* 审批状态
*/
@Schema(description="审批状态")
private String checkStatus;
/**
* @link InventoryRecordItemVo
*/
@Schema(description="item")
private List<InventoryRecordItemVo> items;
}
@@ -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;
}
@@ -0,0 +1,27 @@
package com.bsd.pjcloud.supermarket.vo.unit;
import com.bsd.pjcloud.common.core.util.MoneyDeserializer;
import com.bsd.pjcloud.common.core.util.MoneySerializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "包装单位价格信息")
public class UnitPriceInfo {
/**
* 零售价/单位分
*/
@Schema(description="零售价/单位分")
private Integer retailPrice;
/**
* 促销价
*/
@Schema(description="促销价")
private Integer promotionPrice;
}
@@ -6,11 +6,19 @@ import cn.hutool.core.collection.CollUtil;
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.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.log.annotation.SysLog;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
import com.bsd.pjcloud.supermarket.dto.cgdd.CGPlanLinkQueryDTO;
import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanDTO;
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.CGDdLinkQueryDTO;
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryRecordSaveDTO;
import com.bsd.pjcloud.supermarket.entity.*;
import com.bsd.pjcloud.supermarket.service.*;
import com.bsd.pjcloud.supermarket.vo.cgplan.ErpUnitVo;
import com.bsd.pjcloud.supermarket.vo.inventoryrecord.InventoryRecordItemVo;
import com.bsd.pjcloud.supermarket.vo.inventoryrecord.InventoryRecordVo;
import org.springframework.security.access.prepost.PreAuthorize;
import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
@@ -43,6 +51,7 @@ public class SmErpInventoryRecordsController {
private final SmErpCgPlanService smErpCgPlanService;
private final SmErpSpuService smErpSpuService;
private final SmErpUnitService smErpUnitService;
private final SmErpCgDdService smErpCgDdService;
/**
* 分页查询
@@ -81,47 +90,43 @@ public class SmErpInventoryRecordsController {
//
// SmErpCgPlanVo bean = BeanUtils.toBean(smErpCgPlanEntity, SmErpCgPlanVo.class, (source) -> {
// List<SmeErpCgPlanItemVo> smeErpCgPlanItemVos = BeanUtils.toBean(list, SmeErpCgPlanItemVo.class);
// smeErpCgPlanItemVos.stream().forEach(item -> {
// List<SmErpUnitEntity> unitEntities = unitList.stream().filter(unit -> unit.getSpuId().equals(item.getErpSpuId())).collect(Collectors.toList());
//
//// unitList.stream().forEach(unit -> {
//// if(unit.getId().equals(item.getUnitId())){
//// item.setSpec(unit.getSpec());
//// item.setUnit(unit.getUnit());
//// item.setPackageNum(unit.getPackageNum());
//// item.setPurchasePrice(unit.getPurchasePrice());
//// }
//// });
// item.setErpUnitVos(BeanUtils.toBean(unitEntities, ErpUnitVo.class));
// });
// source.setItems(smeErpCgPlanItemVos);
// });
InventoryRecordVo bean = BeanUtils.toBean(smErpInventoryRecordsEntity, InventoryRecordVo.class, (source) -> {
List<InventoryRecordItemVo> smeErpCgPlanItemVos = BeanUtils.toBean(list, InventoryRecordItemVo.class);
smeErpCgPlanItemVos.stream().forEach(item -> {
List<SmErpUnitEntity> unitEntities = unitList.stream().filter(unit -> unit.getSpuId().equals(item.getErpSpuId())).collect(Collectors.toList());
// unitList.stream().forEach(unit -> {
// if(unit.getId().equals(item.getUnitId())){
// item.setSpec(unit.getSpec());
// item.setUnit(unit.getUnit());
// item.setPackageNum(unit.getPackageNum());
// item.setPurchasePrice(unit.getPurchasePrice());
// }
// });
item.setErpUnitVos(BeanUtils.toBean(unitEntities, ErpUnitVo.class));
});
source.setItems(smeErpCgPlanItemVos);
});
// voList.stream().forEach(vo -> {
// bean.stream().forEach(vo -> {
// List<SmErpUnitEntity> unitEntities = unitList.stream().filter(unit -> unit.getSpuId().equals(vo.getId())).collect(Collectors.toList());
// vo.setErpUnitVos(BeanUtils.toBean(unitEntities, ErpUnitVo.class));
// });
// return R.ok(bean);
return R.ok();
return R.ok(bean);
}
/**
* 新增出入库记录表
* @param smErpInventoryRecords 出入库记录表
* @param inventoryRecordSaveDTO 出入库记录表
* @return R
*/
@Operation(summary = "新增出入库记录表" , description = "新增出入库记录表" )
@SysLog("新增出入库记录表" )
@PostMapping
@PreAuthorize("@pms.hasPermission('supermarket_smErpInventoryRecords_add')" )
public R save(@RequestBody SmErpInventoryRecordsEntity smErpInventoryRecords) {
return R.ok(smErpInventoryRecordsService.save(smErpInventoryRecords));
public R save(@RequestBody InventoryRecordSaveDTO inventoryRecordSaveDTO) {
return R.ok(smErpInventoryRecordsService.saveInventoryRecord(inventoryRecordSaveDTO));
}
/**
@@ -198,4 +203,24 @@ public class SmErpInventoryRecordsController {
}
/**
* 分页查询
* @param page 分页对象
* @param cgDdLinkQueryDTO 采购计划
* @return
*/
@Operation(summary = "采购订单分页查询" , description = "关联采购订单" )
@GetMapping("/cgdd/page" )
public R getSmErpCgPlanPage(@ParameterObject Page page, @ParameterObject CGDdLinkQueryDTO cgDdLinkQueryDTO) {
LambdaQueryWrapper<SmErpCgDdEntity> wrapper = Wrappers.lambdaQuery();
wrapper.like(StrUtil.isNotBlank(cgDdLinkQueryDTO.getCode()),SmErpCgDdEntity::getCode,cgDdLinkQueryDTO.getCode());
wrapper.eq(Objects.nonNull(cgDdLinkQueryDTO.getDDate()),SmErpCgDdEntity::getDDate,cgDdLinkQueryDTO.getDDate());
//todo 审核成功条件
// wrapper.eq(SmErpCgPlanEntity::getCheckStatus,);
return R.ok(smErpCgDdService.pageScope(page, wrapper));
}
}
@@ -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-----------------
@@ -12,6 +12,7 @@ import com.bsd.pjcloud.common.log.annotation.SysLog;
import com.bsd.pjcloud.supermarket.entity.SmErpUnitEntity;
import com.bsd.pjcloud.supermarket.service.SmErpUnitService;
import com.bsd.pjcloud.supermarket.vo.sm.smspu.SmErpUnitVo;
import com.bsd.pjcloud.supermarket.vo.unit.UnitPriceInfo;
import org.springframework.security.access.prepost.PreAuthorize;
import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
@@ -141,6 +142,18 @@ public class SmErpUnitController {
return smErpUnitService.list(Wrappers.lambdaQuery(supermarketUnit).in(ArrayUtil.isNotEmpty(ids), SmErpUnitEntity::getId, ids));
}
/**
* 通过条码查询商品信息和包装单位信息
* @param barCode
* @return R
*///todo 还没做,后面做吧
// @Operation(summary = "条码查询商品信息和包装单位信息" , description = "添加子单据扫码枪获取信息" )
// @PostMapping("/ad/getSupermarketUnits" )
// public R getSupermarketUnits(@RequestParam("barCode")String barCode) {
// List<UnitPriceInfo> unitPriceInfos=smErpUnitService.listScope(barCode);
// return R.ok(unitPriceInfos);
// }
// -----------------APP------------------------------
@@ -155,4 +168,19 @@ public class SmErpUnitController {
return R.ok(smErpUnitService.getSupermarketUnitsWithSpu(ids));
}
//--------------------------------AD----------------------
/**
* 通过条码查询对应的包装单位商品价格信息
* @param barCode
* @return R
*/
@Operation(summary = "条码查询对应的包装单位商品价格" , description = "条码查询对应的包装单位商品价格" )
@PostMapping("/ad/getSupermarketUnits" )
public R getSupermarketUnits(@RequestParam("barCode")String barCode) {
List<UnitPriceInfo> unitPriceInfos=smErpUnitService.listScope(barCode);
return R.ok(unitPriceInfos);
}
}
@@ -1,11 +1,22 @@
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.dto.inventoryrecords.UpdateStockDTO;
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;
import java.util.List;
@Mapper
public interface SmErpStockMapper extends PjcloudBaseMapper<SmErpStockEntity> {
IPage<StockWarnVO> selectWarnStockWithSpu(Page<SmErpStockEntity> page, @Param("param") SmErpSpuEntity param);
}
@@ -1,9 +1,12 @@
package com.bsd.pjcloud.supermarket.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.supermarket.dto.cgdd.ErpCgDDEditDTO;
import com.bsd.pjcloud.supermarket.dto.cgdd.ErpCgDDSaveDTO;
import com.bsd.pjcloud.supermarket.entity.SmErpCgDdEntity;
import com.bsd.pjcloud.supermarket.entity.SmErpCgPlanEntity;
public interface SmErpCgDdService extends IService<SmErpCgDdEntity> {
@@ -22,4 +25,13 @@ public interface SmErpCgDdService extends IService<SmErpCgDdEntity> {
* @return
*/
Object updateByErpCgDdEditDTO(ErpCgDDEditDTO erpCgDDEditDTO);
/**
* 关联采购订单分页查询
* @param page
* @param wrapper
* @return
*/
Object pageScope(Page page, LambdaQueryWrapper<SmErpCgDdEntity> wrapper);
}
@@ -1,8 +1,16 @@
package com.bsd.pjcloud.supermarket.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryRecordSaveDTO;
import com.bsd.pjcloud.supermarket.entity.SmErpInventoryRecordsEntity;
public interface SmErpInventoryRecordsService extends IService<SmErpInventoryRecordsEntity> {
/**
* 插入出入库信息
* @param inventoryRecordSaveDTO
* @return
*/
Object saveInventoryRecord(InventoryRecordSaveDTO inventoryRecordSaveDTO);
}
@@ -1,8 +1,27 @@
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.dto.inventoryrecords.UpdateStockDTO;
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 java.util.List;
public interface SmErpStockService extends IService<SmErpStockEntity> {
IPage<StockWarnVO> selectWarnStockWithSpu(Page<SmErpStockEntity> page,SmErpSpuEntity param);
/**
* 更新库存
* @param updateStockDTOS
* @return
*/
void updateStock(List<UpdateStockDTO> updateStockDTOS);
}
@@ -1,8 +1,10 @@
package com.bsd.pjcloud.supermarket.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.supermarket.entity.SmErpUnitEntity;
import com.bsd.pjcloud.supermarket.vo.erp.SmErpUnitWithSpuVo;
import com.bsd.pjcloud.supermarket.vo.unit.UnitPriceInfo;
import java.util.List;
@@ -15,4 +17,12 @@ public interface SmErpUnitService extends IService<SmErpUnitEntity> {
* @return
*/
List<SmErpUnitWithSpuVo> getSupermarketUnitsWithSpu(List<Long> ids);
/**
* 根据条形码获取价格信息
* @param barCode
* @return
*/
List<UnitPriceInfo> listScope(String barCode);
}
@@ -1,8 +1,11 @@
package com.bsd.pjcloud.supermarket.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
import com.bsd.pjcloud.supermarket.dto.cgdd.ErpCgDDEditDTO;
import com.bsd.pjcloud.supermarket.dto.cgdd.ErpCgDDSaveDTO;
@@ -17,10 +20,17 @@ import com.bsd.pjcloud.supermarket.entity.SmErpCgPlanItemEntity;
import com.bsd.pjcloud.supermarket.mapper.SmErpCgDdItemMapper;
import com.bsd.pjcloud.supermarket.mapper.SmErpCgDdMapper;
import com.bsd.pjcloud.supermarket.service.SmErpCgDdService;
import com.bsd.pjcloud.supermarket.vo.cgdd.SmErpCgDdVo;
import com.bsd.pjcloud.supermarket.vo.cgdd.SmeErpCgDdItemVo;
import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanItemVo;
import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanVo;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
@@ -34,6 +44,7 @@ import java.util.stream.Collectors;
public class SmErpCgDdServiceImpl extends ServiceImpl<SmErpCgDdMapper, SmErpCgDdEntity> implements SmErpCgDdService {
private final SmErpCgDdItemMapper smErpCgDDItemMapper;
@Override
public Object saveCGDD(ErpCgDDSaveDTO erpCgDDSaveDTO) {
Long deptId = SecurityUtils.getUser().getDeptId();
@@ -73,4 +84,43 @@ public class SmErpCgDdServiceImpl extends ServiceImpl<SmErpCgDdMapper, SmErpCgDd
smErpCgDDItemMapper.insertOrUpdate(cgPlanItemEntities);
return R.ok(i);
}
@Override
public Object pageScope(Page page, LambdaQueryWrapper<SmErpCgDdEntity> wrapper) {
// 1. 查询主表分页数据
Page<SmErpCgDdEntity> pageData = baseMapper.selectPageByScope(page, wrapper, DataScope.of());
List<SmErpCgDdEntity> records = pageData.getRecords();
// 2. 提前收集所有主表ID(去重处理)
Set<Long> planIds = records.stream()
.map(SmErpCgDdEntity::getId)
.collect(Collectors.toSet());
// 3. 批量查询所有子表数据(仅1次数据库查询)
Map<Long, List<SmErpCgDdItemEntity>> itemMap;
if (!planIds.isEmpty()) {
LambdaQueryWrapper<SmErpCgDdItemEntity> itemWrapper = new LambdaQueryWrapper<>();
itemWrapper.in(SmErpCgDdItemEntity::getHId, planIds);
List<SmErpCgDdItemEntity> items = smErpCgDDItemMapper.selectList(itemWrapper);
// 按planId分组建立映射关系
itemMap = items.stream()
.collect(Collectors.groupingBy(SmErpCgDdItemEntity::getHId));
} else {
itemMap = Collections.emptyMap();
}
// 4. 转换主表VO并关联子表数据
List<SmErpCgDdVo> voList = BeanUtils.toBean(records, SmErpCgDdVo.class);
voList.forEach(vo -> {
List<SmeErpCgDdItemVo> itemVos = BeanUtils.toBean(
itemMap.getOrDefault(vo.getId(), Collections.emptyList()),
SmeErpCgDdItemVo.class
);
vo.setItems(itemVos);
});
Page<SmErpCgDdVo> resultPage = new Page<>();
org.springframework.beans.BeanUtils.copyProperties(pageData, resultPage, "records"); // 复制分页参数
resultPage.setRecords(voList);
return resultPage;
}
}
@@ -1,10 +1,28 @@
package com.bsd.pjcloud.supermarket.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
import com.bsd.pjcloud.supermarket.dto.cgdd.SmCgDDSaveItemDTO;
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryRecordSaveDTO;
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryRecordSaveItemDTO;
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.UpdateStockDTO;
import com.bsd.pjcloud.supermarket.entity.SmErpCgDdEntity;
import com.bsd.pjcloud.supermarket.entity.SmErpCgDdItemEntity;
import com.bsd.pjcloud.supermarket.entity.SmErpInventoryRecordsEntity;
import com.bsd.pjcloud.supermarket.entity.SmErpInventoryRecordsItemEntity;
import com.bsd.pjcloud.supermarket.mapper.SmErpInventoryRecordsItemMapper;
import com.bsd.pjcloud.supermarket.mapper.SmErpInventoryRecordsMapper;
import com.bsd.pjcloud.supermarket.mapper.SmErpStockMapper;
import com.bsd.pjcloud.supermarket.service.SmErpInventoryRecordsService;
import com.bsd.pjcloud.supermarket.service.SmErpStockService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
* 出入库记录表
*
@@ -12,5 +30,43 @@ import org.springframework.stereotype.Service;
* @date 2025-02-10 12:15:37
*/
@Service
@AllArgsConstructor
public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventoryRecordsMapper, SmErpInventoryRecordsEntity> implements SmErpInventoryRecordsService {
private final SmErpInventoryRecordsItemMapper smErpInventoryRecordsItemMapper;
private final SmErpStockService smErpStockService;
@Override
@Transactional
public Object saveInventoryRecord(InventoryRecordSaveDTO inventoryRecordSaveDTO) {
Long deptId = SecurityUtils.getUser().getDeptId();
SmErpInventoryRecordsEntity smErpCgDdEntity = BeanUtils.toBean(inventoryRecordSaveDTO, SmErpInventoryRecordsEntity.class);
smErpCgDdEntity.setDeptId(deptId);
smErpCgDdEntity.setCheckStatus("0");
smErpCgDdEntity.setDeptId(deptId);
int insert = baseMapper.insert(smErpCgDdEntity);
List<InventoryRecordSaveItemDTO> items = inventoryRecordSaveDTO.getItems();
List<SmErpInventoryRecordsItemEntity> cgPlanItemEntities = BeanUtils.toBean(items, SmErpInventoryRecordsItemEntity.class);
List<UpdateStockDTO> updateStockDTOS = new ArrayList<>();
for (SmErpInventoryRecordsItemEntity cgPlanItemEntity : cgPlanItemEntities) {
cgPlanItemEntity.setInventoryId(smErpCgDdEntity.getId());
cgPlanItemEntity.setDeptId(deptId);
UpdateStockDTO updateStockDTO = new UpdateStockDTO();
updateStockDTO.setId(cgPlanItemEntity.getErpSpuId());
updateStockDTO.setIncrCount(cgPlanItemEntity.getQuantity());
updateStockDTOS.add(updateStockDTO);
}
smErpInventoryRecordsItemMapper.insert(cgPlanItemEntities);
//todo 实际上应该审批后才会入库
//更新库存
smErpStockService.updateStock(updateStockDTOS);
return insert;
}
}
@@ -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,10 +1,23 @@
package com.bsd.pjcloud.supermarket.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.dto.inventoryrecords.InventoryRecordSaveItemDTO;
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.UpdateStockDTO;
import com.bsd.pjcloud.supermarket.entity.SmErpSpuEntity;
import com.bsd.pjcloud.supermarket.entity.SmErpStockEntity;
import com.bsd.pjcloud.supermarket.mapper.SmErpSpuMapper;
import com.bsd.pjcloud.supermarket.mapper.SmErpStockMapper;
import com.bsd.pjcloud.supermarket.service.SmErpStockService;
import com.bsd.pjcloud.supermarket.vo.stockwarn.StockWarnVO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 商品包装单位(sku)
*
@@ -12,5 +25,38 @@ import org.springframework.stereotype.Service;
* @date 2025-01-23 13:50:24
*/
@Service
@AllArgsConstructor
public class SmErpStockServiceImpl extends ServiceImpl<SmErpStockMapper, SmErpStockEntity> implements SmErpStockService {
private final SmErpSpuMapper smErpSpuMapper;
@Override
public IPage<StockWarnVO> selectWarnStockWithSpu(Page<SmErpStockEntity> page, SmErpSpuEntity param) {
return baseMapper.selectWarnStockWithSpu(page, param);
}
@Override
@Transactional
public void updateStock(List<UpdateStockDTO> updateStockDTOS) {
// 更新库存(手动乐观锁)
for (UpdateStockDTO item : updateStockDTOS) {
// 1. 先查询当前版本号
LambdaQueryWrapper<SmErpStockEntity> smErpStockEntityLambdaQueryWrapper = new LambdaQueryWrapper<SmErpStockEntity>();
smErpStockEntityLambdaQueryWrapper.eq(SmErpStockEntity::getSpuId,item.getId());
SmErpStockEntity smErpStockEntity = baseMapper.selectOne(smErpStockEntityLambdaQueryWrapper);
LambdaQueryWrapper<SmErpStockEntity> updateStockWithLockWrapper = new LambdaQueryWrapper<SmErpStockEntity>();
updateStockWithLockWrapper.eq(SmErpStockEntity::getSpuId,item.getId());
updateStockWithLockWrapper.eq(SmErpStockEntity::getVersion,smErpStockEntity.getVersion());
SmErpStockEntity updateSmErpStockEntity = new SmErpStockEntity();
updateSmErpStockEntity.setCurrentStock(smErpStockEntity.getCurrentStock()+item.getIncrCount());
int update = baseMapper.update(updateSmErpStockEntity, updateStockWithLockWrapper);
// 3. 检查更新结果
if (update == 0) {
throw new RuntimeException("库存更新冲突,请重试操作");
}
}
}
}
@@ -1,10 +1,14 @@
package com.bsd.pjcloud.supermarket.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.supermarket.entity.SmErpUnitEntity;
import com.bsd.pjcloud.supermarket.mapper.SmErpUnitMapper;
import com.bsd.pjcloud.supermarket.service.SmErpUnitService;
import com.bsd.pjcloud.supermarket.vo.erp.SmErpUnitWithSpuVo;
import com.bsd.pjcloud.supermarket.vo.unit.UnitPriceInfo;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -22,4 +26,13 @@ public class SmErpUnitServiceImpl extends ServiceImpl<SmErpUnitMapper, SmErpUnit
return baseMapper.getSupermarketUnitsWithSpu(ids);
}
@Override
public List<UnitPriceInfo> listScope(String barCode) {
LambdaQueryWrapper<SmErpUnitEntity> smErpUnitEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
smErpUnitEntityLambdaQueryWrapper.eq(SmErpUnitEntity::getBarCode,barCode);
List<SmErpUnitEntity> smErpUnitEntities = baseMapper.selectListByScope(smErpUnitEntityLambdaQueryWrapper, DataScope.of());
List<UnitPriceInfo> bean = BeanUtils.toBean(smErpUnitEntities, UnitPriceInfo.class);
return bean;
}
}
@@ -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,55 @@
<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 '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
<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>
@@ -0,0 +1,14 @@
package com.bsd.pjcloud.admin.api.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "简要用户信息")
public class SimpleUserAllListVO {
private Long id;
private String nameWithMobile;
}
@@ -21,11 +21,13 @@ package com.bsd.pjcloud.admin.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
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.bsd.pjcloud.admin.api.dto.UserDTO;
import com.bsd.pjcloud.admin.api.dto.UserInfo;
import com.bsd.pjcloud.admin.api.entity.SysUser;
import com.bsd.pjcloud.admin.api.vo.SimpleUserAllListVO;
import com.bsd.pjcloud.admin.api.vo.UserExcelFaceVo;
import com.bsd.pjcloud.admin.api.vo.UserExcelVO;
import com.bsd.pjcloud.admin.api.vo.UserVO;
@@ -41,10 +43,12 @@ import com.bsd.pjcloud.common.security.annotation.HasPermission;
import com.bsd.pjcloud.common.security.annotation.Inner;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.http.HttpHeaders;
import org.springframework.transaction.annotation.Transactional;
@@ -373,4 +377,16 @@ public class SysUserController {
public R<List<SysUser>> getUserByMobile(@RequestParam("mobile") String mobile) {
return R.ok(userService.list(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getPhone, mobile)));
}
@GetMapping("/getSimpleUserAll")
@Schema(description = "简要用户信息")
public R<List<SimpleUserAllListVO>> getSimpleUserAllList(@RequestParam(value = "mobile",required = false) String mobile,
@RequestParam(value = "name",required = false) String name){
LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
sysUserLambdaQueryWrapper.like(StringUtils.isNotBlank(mobile),SysUser::getPhone,mobile);
sysUserLambdaQueryWrapper.like(StringUtils.isNotBlank(name),SysUser::getName,name);
List<SimpleUserAllListVO> list = userService.listScope(sysUserLambdaQueryWrapper);
return R.ok(list);
}
}
@@ -19,12 +19,14 @@
package com.bsd.pjcloud.admin.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.admin.api.dto.UserDTO;
import com.bsd.pjcloud.admin.api.dto.UserInfo;
import com.bsd.pjcloud.admin.api.entity.SysUser;
import com.bsd.pjcloud.admin.api.vo.SimpleUserAllListVO;
import com.bsd.pjcloud.admin.api.vo.UserExcelFaceVo;
import com.bsd.pjcloud.admin.api.vo.UserExcelVO;
import com.bsd.pjcloud.admin.api.vo.UserVO;
@@ -191,4 +193,12 @@ public interface SysUserService extends IService<SysUser> {
R<Boolean> resetUserPassword(UserDTO userDto);
List<UserVO> getUserDeptByIds(List<Long> userIds);
/**
* 查询所有用户简单信息
* @param sysUserLambdaQueryWrapper
* @return
*/
List<SimpleUserAllListVO> listScope(LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper);
}
@@ -26,6 +26,7 @@ import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -38,10 +39,7 @@ import com.bsd.pjcloud.admin.api.dto.UserDTO;
import com.bsd.pjcloud.admin.api.dto.UserInfo;
import com.bsd.pjcloud.admin.api.entity.*;
import com.bsd.pjcloud.admin.api.utils.DataUtil;
import com.bsd.pjcloud.admin.api.vo.SysUserFaceVo;
import com.bsd.pjcloud.admin.api.vo.UserExcelFaceVo;
import com.bsd.pjcloud.admin.api.vo.UserExcelVO;
import com.bsd.pjcloud.admin.api.vo.UserVO;
import com.bsd.pjcloud.admin.api.vo.*;
import com.bsd.pjcloud.admin.mapper.SysUserFaceMapper;
import com.bsd.pjcloud.admin.mapper.SysUserMapper;
import com.bsd.pjcloud.admin.mapper.SysUserPostMapper;
@@ -767,4 +765,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
public List<UserVO> getUserDeptByIds(List<Long> userIds) {
return baseMapper.selectVoListByScope(new UserDTO(), userIds.toArray(new Long[0]), null);
}
@Override
public List<SimpleUserAllListVO> listScope(LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper) {
List<SysUser> sysUsers = baseMapper.selectListByScope(sysUserLambdaQueryWrapper,DataScope.of());
List<SimpleUserAllListVO> collect = sysUsers.stream().map(sysUser -> {
SimpleUserAllListVO vo = new SimpleUserAllListVO();
vo.setId(sysUser.getUserId());
vo.setNameWithMobile(sysUser.getName() + "-" + sysUser.getPhone());
return vo;
}).collect(Collectors.toList());
return collect;
}
}