diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryRecordSaveDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryRecordSaveDTO.java new file mode 100644 index 000000000..cc8ff2384 --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryRecordSaveDTO.java @@ -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 items; + + + + +} diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryRecordSaveItemDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryRecordSaveItemDTO.java new file mode 100644 index 000000000..9d601bdc3 --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryRecordSaveItemDTO.java @@ -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; + +} \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/UpdateStockDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/UpdateStockDTO.java new file mode 100644 index 000000000..bb16e1095 --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/UpdateStockDTO.java @@ -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; + + +} diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/unit/UnitPriceInfo.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/unit/UnitPriceInfo.java new file mode 100644 index 000000000..7607fb4f0 --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/unit/UnitPriceInfo.java @@ -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; + +} diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java index 2ed8657ab..ad74d6a44 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpInventoryRecordsController.java @@ -9,9 +9,11 @@ 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; @@ -116,15 +118,15 @@ public class SmErpInventoryRecordsController { /** * 新增出入库记录表 - * @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)); } /** diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpUnitController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpUnitController.java index a37428ce7..5a5922d9d 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpUnitController.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpUnitController.java @@ -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 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 unitPriceInfos=smErpUnitService.listScope(barCode); + return R.ok(unitPriceInfos); + } } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpStockMapper.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpStockMapper.java index 54099af81..d46d9fdeb 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpStockMapper.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SmErpStockMapper.java @@ -3,15 +3,20 @@ 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 { IPage selectWarnStockWithSpu(Page page, @Param("param") SmErpSpuEntity param); + + } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpInventoryRecordsService.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpInventoryRecordsService.java index d2d408fa8..dd30b9874 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpInventoryRecordsService.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpInventoryRecordsService.java @@ -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 { + + /** + * 插入出入库信息 + * @param inventoryRecordSaveDTO + * @return + */ + Object saveInventoryRecord(InventoryRecordSaveDTO inventoryRecordSaveDTO); } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpStockService.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpStockService.java index 212872861..7070913c2 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpStockService.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpStockService.java @@ -3,14 +3,25 @@ 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 { IPage selectWarnStockWithSpu(Page page,SmErpSpuEntity param); + + + /** + * 更新库存 + * @param updateStockDTOS + * @return + */ + void updateStock(List updateStockDTOS); } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpUnitService.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpUnitService.java index b40bf740e..990f0cce6 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpUnitService.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SmErpUnitService.java @@ -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 { * @return */ List getSupermarketUnitsWithSpu(List ids); + + + /** + * 根据条形码获取价格信息 + * @param barCode + * @return + */ + List listScope(String barCode); } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java index 868d43f68..4247bffcb 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java @@ -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 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 items = inventoryRecordSaveDTO.getItems(); + List cgPlanItemEntities = BeanUtils.toBean(items, SmErpInventoryRecordsItemEntity.class); + List 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; + } + + } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpStockServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpStockServiceImpl.java index c03259544..431dbc6ab 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpStockServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpStockServiceImpl.java @@ -1,14 +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) * @@ -16,10 +25,38 @@ import org.springframework.stereotype.Service; * @date 2025-01-23 13:50:24 */ @Service +@AllArgsConstructor public class SmErpStockServiceImpl extends ServiceImpl implements SmErpStockService { + private final SmErpSpuMapper smErpSpuMapper; + + @Override public IPage selectWarnStockWithSpu(Page page, SmErpSpuEntity param) { return baseMapper.selectWarnStockWithSpu(page, param); } + + @Override + @Transactional + public void updateStock(List updateStockDTOS) { + // 更新库存(手动乐观锁) + for (UpdateStockDTO item : updateStockDTOS) { + // 1. 先查询当前版本号 + LambdaQueryWrapper smErpStockEntityLambdaQueryWrapper = new LambdaQueryWrapper(); + smErpStockEntityLambdaQueryWrapper.eq(SmErpStockEntity::getSpuId,item.getId()); + SmErpStockEntity smErpStockEntity = baseMapper.selectOne(smErpStockEntityLambdaQueryWrapper); + + LambdaQueryWrapper updateStockWithLockWrapper = new LambdaQueryWrapper(); + 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("库存更新冲突,请重试操作"); + } + } + + } } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpUnitServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpUnitServiceImpl.java index 658a72d68..3d41a07c8 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpUnitServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpUnitServiceImpl.java @@ -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 listScope(String barCode) { + LambdaQueryWrapper smErpUnitEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + smErpUnitEntityLambdaQueryWrapper.eq(SmErpUnitEntity::getBarCode,barCode); + List smErpUnitEntities = baseMapper.selectListByScope(smErpUnitEntityLambdaQueryWrapper, DataScope.of()); + List bean = BeanUtils.toBean(smErpUnitEntities, UnitPriceInfo.class); + return bean; + } } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpStockMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpStockMapper.xml index f7204f451..73b2572a0 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpStockMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpStockMapper.xml @@ -52,7 +52,6 @@ (stock.base_stock + stock.current_stock) < stock.inventory_lower_limit or (stock.base_stock + stock.current_stock) > stock.inventory_upper_limit - AND spu.product_code = #{param.productCode}