超市
This commit is contained in:
		| @ -39,4 +39,6 @@ public class StoreSaleGoodsPageVO extends PageParam { | |||||||
|  |  | ||||||
|     private Integer goodsId; |     private Integer goodsId; | ||||||
|  |  | ||||||
|  |     private Integer number; | ||||||
|  |  | ||||||
| } | } | ||||||
| @ -87,7 +87,10 @@ public class StoreGoodsInventoryController { | |||||||
|     @PreAuthorize("@ss.hasPermission('member:store-goods-inventory:query')") |     @PreAuthorize("@ss.hasPermission('member:store-goods-inventory:query')") | ||||||
|     public CommonResult<StoreGoodsInventoryRespVO> getStoreGoodsInventory(@RequestParam("id") Integer id) { |     public CommonResult<StoreGoodsInventoryRespVO> getStoreGoodsInventory(@RequestParam("id") Integer id) { | ||||||
|         StoreGoodsInventoryDO storeGoodsInventory = storeGoodsInventoryService.getStoreGoodsInventory(id); |         StoreGoodsInventoryDO storeGoodsInventory = storeGoodsInventoryService.getStoreGoodsInventory(id); | ||||||
|         return success(BeanUtils.toBean(storeGoodsInventory, StoreGoodsInventoryRespVO.class)); |         StoreGoodsInventoryRespVO bean = BeanUtils.toBean(storeGoodsInventory, StoreGoodsInventoryRespVO.class); | ||||||
|  |         StoreGoodsDO storeGoods = storeGoodsService.getStoreGoods(storeGoodsInventory.getGoodsId()); | ||||||
|  |         bean.setGoodsInfo(storeGoods); | ||||||
|  |         return success(bean); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @GetMapping("/page") |     @GetMapping("/page") | ||||||
|  | |||||||
| @ -1,11 +1,14 @@ | |||||||
| package cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo; | package cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo; | ||||||
|  |  | ||||||
| import lombok.*; |  | ||||||
| import java.util.*; |  | ||||||
| import io.swagger.v3.oas.annotations.media.Schema; |  | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageParam; | import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||||||
|  | import io.swagger.v3.oas.annotations.media.Schema; | ||||||
|  | import lombok.Data; | ||||||
|  | import lombok.EqualsAndHashCode; | ||||||
|  | import lombok.ToString; | ||||||
| import org.springframework.format.annotation.DateTimeFormat; | import org.springframework.format.annotation.DateTimeFormat; | ||||||
|  |  | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||||||
|  |  | ||||||
| @ -31,4 +34,10 @@ public class StoreGoodsInventoryPageReqVO extends PageParam { | |||||||
|     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||||||
|     private LocalDateTime[] createTime; |     private LocalDateTime[] createTime; | ||||||
|  |  | ||||||
|  |     @Schema(description = "商品ID", example = "16735") | ||||||
|  |     private String goodsName; | ||||||
|  |  | ||||||
|  |     @Schema(description = "商品ID", example = "16735") | ||||||
|  |     private List<Integer> goodsIds; | ||||||
|  |  | ||||||
| } | } | ||||||
| @ -1,33 +1,41 @@ | |||||||
| package cn.iocoder.yudao.module.member.controller.admin.storesalegoods; | package cn.iocoder.yudao.module.member.controller.admin.storesalegoods; | ||||||
|  |  | ||||||
| import org.springframework.web.bind.annotation.*; | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||||||
| import javax.annotation.Resource; |  | ||||||
| import org.springframework.validation.annotation.Validated; |  | ||||||
| import org.springframework.security.access.prepost.PreAuthorize; |  | ||||||
| import io.swagger.v3.oas.annotations.tags.Tag; |  | ||||||
| import io.swagger.v3.oas.annotations.Parameter; |  | ||||||
| import io.swagger.v3.oas.annotations.Operation; |  | ||||||
|  |  | ||||||
| import javax.validation.constraints.*; |  | ||||||
| import javax.validation.*; |  | ||||||
| import javax.servlet.http.*; |  | ||||||
| import java.util.*; |  | ||||||
| import java.io.IOException; |  | ||||||
|  |  | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageParam; | import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.CommonResult; |  | ||||||
| import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||||||
| import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |  | ||||||
|  |  | ||||||
| import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | ||||||
|  |  | ||||||
| import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | ||||||
| import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; | import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.AddReqVO; | ||||||
|  | import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.StoreSaleGoodsPageReqVO; | ||||||
| import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.*; | import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.StoreSaleGoodsRespVO; | ||||||
|  | import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.StoreSaleGoodsSaveBatchVO; | ||||||
|  | import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.StoreSaleGoodsSaveReqVO; | ||||||
| import cn.iocoder.yudao.module.member.dal.dataobject.storesalegoods.StoreSaleGoodsDO; | import cn.iocoder.yudao.module.member.dal.dataobject.storesalegoods.StoreSaleGoodsDO; | ||||||
|  | import cn.iocoder.yudao.module.member.service.async.MemberAsyncService; | ||||||
| import cn.iocoder.yudao.module.member.service.storesalegoods.StoreSaleGoodsService; | import cn.iocoder.yudao.module.member.service.storesalegoods.StoreSaleGoodsService; | ||||||
|  | import io.swagger.v3.oas.annotations.Operation; | ||||||
|  | import io.swagger.v3.oas.annotations.Parameter; | ||||||
|  | import io.swagger.v3.oas.annotations.tags.Tag; | ||||||
|  | import org.springframework.security.access.prepost.PreAuthorize; | ||||||
|  | import org.springframework.validation.annotation.Validated; | ||||||
|  | import org.springframework.web.bind.annotation.DeleteMapping; | ||||||
|  | import org.springframework.web.bind.annotation.GetMapping; | ||||||
|  | import org.springframework.web.bind.annotation.PostMapping; | ||||||
|  | import org.springframework.web.bind.annotation.PutMapping; | ||||||
|  | import org.springframework.web.bind.annotation.RequestBody; | ||||||
|  | import org.springframework.web.bind.annotation.RequestMapping; | ||||||
|  | import org.springframework.web.bind.annotation.RequestParam; | ||||||
|  | import org.springframework.web.bind.annotation.RestController; | ||||||
|  |  | ||||||
|  | import javax.annotation.Resource; | ||||||
|  | import javax.servlet.http.HttpServletResponse; | ||||||
|  | import javax.validation.Valid; | ||||||
|  | import java.io.IOException; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||||||
|  | import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; | ||||||
|  |  | ||||||
| @Tag(name = "管理后台 - 售卖商品") | @Tag(name = "管理后台 - 售卖商品") | ||||||
| @RestController | @RestController | ||||||
| @ -37,12 +45,16 @@ public class StoreSaleGoodsController { | |||||||
|  |  | ||||||
|     @Resource |     @Resource | ||||||
|     private StoreSaleGoodsService storeSaleGoodsService; |     private StoreSaleGoodsService storeSaleGoodsService; | ||||||
|  |     @Resource | ||||||
|  |     private MemberAsyncService memberAsyncService; | ||||||
|  |  | ||||||
|     @PostMapping("/create") |     @PostMapping("/create") | ||||||
|     @Operation(summary = "创建售卖商品(上架)") |     @Operation(summary = "创建售卖商品(上架)") | ||||||
|     @PreAuthorize("@ss.hasPermission('member:store-sale-goods:create')") |     @PreAuthorize("@ss.hasPermission('member:store-sale-goods:create')") | ||||||
|     public CommonResult<Integer> createStoreSaleGoods(@Valid @RequestBody StoreSaleGoodsSaveBatchVO createReqVO) { |     public CommonResult<Integer> createStoreSaleGoods(@Valid @RequestBody StoreSaleGoodsSaveBatchVO createReqVO) { | ||||||
|         return success(storeSaleGoodsService.createStoreSaleGoods(createReqVO)); |         AddReqVO storeSaleGoods = storeSaleGoodsService.createStoreSaleGoods(createReqVO); | ||||||
|  |         memberAsyncService.batchRecord(storeSaleGoods); | ||||||
|  |         return success(storeSaleGoods.getList().size()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @PutMapping("/update") |     @PutMapping("/update") | ||||||
|  | |||||||
| @ -2,8 +2,12 @@ package cn.iocoder.yudao.module.member.controller.app.storegoods; | |||||||
|  |  | ||||||
| import cn.iocoder.yudao.framework.common.pojo.CommonResult; | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
|  | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||||||
| import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.StoreSaleGoodsPageVO; | import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.StoreSaleGoodsPageVO; | ||||||
|  | import cn.iocoder.yudao.module.member.controller.app.storegoods.vo.StoreGoodsVO; | ||||||
|  | import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO; | ||||||
| import cn.iocoder.yudao.module.member.service.storegoods.StoreGoodsService; | import cn.iocoder.yudao.module.member.service.storegoods.StoreGoodsService; | ||||||
|  | import cn.iocoder.yudao.module.member.service.storegoodsinventory.StoreGoodsInventoryService; | ||||||
| import io.swagger.v3.oas.annotations.Operation; | import io.swagger.v3.oas.annotations.Operation; | ||||||
| import io.swagger.v3.oas.annotations.tags.Tag; | import io.swagger.v3.oas.annotations.tags.Tag; | ||||||
| import org.springframework.validation.annotation.Validated; | import org.springframework.validation.annotation.Validated; | ||||||
| @ -24,6 +28,8 @@ public class AppStoreGoodsController { | |||||||
|  |  | ||||||
|     @Resource |     @Resource | ||||||
|     private StoreGoodsService storeGoodsService; |     private StoreGoodsService storeGoodsService; | ||||||
|  |     @Resource | ||||||
|  |     private StoreGoodsInventoryService storeGoodsInventoryService; | ||||||
|  |  | ||||||
|  |  | ||||||
|     @GetMapping("/page") |     @GetMapping("/page") | ||||||
| @ -33,4 +39,14 @@ public class AppStoreGoodsController { | |||||||
|         return success(pageResult); |         return success(pageResult); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("/get") | ||||||
|  |     @Operation(summary = "获得商品详情") | ||||||
|  |     public CommonResult<StoreGoodsVO> getStoreGoods(Integer goodsId,Long carteenId ) { | ||||||
|  |         StoreGoodsDO storeGoods = storeGoodsService.getStoreGoods(goodsId); | ||||||
|  |         StoreGoodsVO bean = BeanUtils.toBean(storeGoods, StoreGoodsVO.class); | ||||||
|  |         Integer inventory = storeGoodsInventoryService.getInventory(goodsId, carteenId); | ||||||
|  |         bean.setInventory(inventory); | ||||||
|  |         return success(bean); | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
| @ -0,0 +1,54 @@ | |||||||
|  | package cn.iocoder.yudao.module.member.controller.app.storegoods.vo; | ||||||
|  |  | ||||||
|  | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | ||||||
|  | import lombok.AllArgsConstructor; | ||||||
|  | import lombok.Data; | ||||||
|  | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 商品 DO | ||||||
|  |  * | ||||||
|  |  * @author 管理员 | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | @Data | ||||||
|  | @NoArgsConstructor | ||||||
|  | @AllArgsConstructor | ||||||
|  | public class StoreGoodsVO extends BaseDO { | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 编号 | ||||||
|  |      */ | ||||||
|  |     private Integer goodsId; | ||||||
|  |     /** | ||||||
|  |      * 类别Id | ||||||
|  |      */ | ||||||
|  |     private Integer categoryId; | ||||||
|  |     /** | ||||||
|  |      * 商品名称 | ||||||
|  |      */ | ||||||
|  |     private String goodsName; | ||||||
|  |     /** | ||||||
|  |      * 价格 | ||||||
|  |      */ | ||||||
|  |     private Double price; | ||||||
|  |     /** | ||||||
|  |      * 售卖模式 | ||||||
|  |      */ | ||||||
|  |     private Integer salesModel; | ||||||
|  |     /** | ||||||
|  |      * 设备ID | ||||||
|  |      */ | ||||||
|  |     private String equipmentCode; | ||||||
|  |  | ||||||
|  |      /** | ||||||
|  |      * 库存 | ||||||
|  |      */ | ||||||
|  |     private Integer inventory; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 图片 | ||||||
|  |      */ | ||||||
|  |     private String img; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -1,13 +1,11 @@ | |||||||
| package cn.iocoder.yudao.module.member.dal.mysql.storegoodsinventory; | package cn.iocoder.yudao.module.member.dal.mysql.storegoodsinventory; | ||||||
|  |  | ||||||
| import java.util.*; |  | ||||||
|  |  | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
| import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |  | ||||||
| import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||||||
|  | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||||||
|  | import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.StoreGoodsInventoryPageReqVO; | ||||||
| import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventory.StoreGoodsInventoryDO; | import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventory.StoreGoodsInventoryDO; | ||||||
| import org.apache.ibatis.annotations.Mapper; | import org.apache.ibatis.annotations.Mapper; | ||||||
| import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.*; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 商品库存 Mapper |  * 商品库存 Mapper | ||||||
| @ -24,6 +22,7 @@ public interface StoreGoodsInventoryMapper extends BaseMapperX<StoreGoodsInvento | |||||||
|                 .eqIfPresent(StoreGoodsInventoryDO::getNumber, reqVO.getNumber()) |                 .eqIfPresent(StoreGoodsInventoryDO::getNumber, reqVO.getNumber()) | ||||||
|                 .eqIfPresent(StoreGoodsInventoryDO::getWeight, reqVO.getWeight()) |                 .eqIfPresent(StoreGoodsInventoryDO::getWeight, reqVO.getWeight()) | ||||||
|                 .betweenIfPresent(StoreGoodsInventoryDO::getCreateTime, reqVO.getCreateTime()) |                 .betweenIfPresent(StoreGoodsInventoryDO::getCreateTime, reqVO.getCreateTime()) | ||||||
|  |                 .inIfPresent(StoreGoodsInventoryDO::getGoodsId, reqVO.getGoodsIds()) | ||||||
|                 .orderByDesc(StoreGoodsInventoryDO::getId)); |                 .orderByDesc(StoreGoodsInventoryDO::getId)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -23,6 +23,15 @@ public interface StoreGoodsInventoryService { | |||||||
|      */ |      */ | ||||||
|     Integer createStoreGoodsInventory(@Valid AddReqVO createReqVO); |     Integer createStoreGoodsInventory(@Valid AddReqVO createReqVO); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 创建商品库存(上架专用) | ||||||
|  |      * | ||||||
|  |      * @param createReqVO 创建信息 | ||||||
|  |      * @return 编号 | ||||||
|  |      */ | ||||||
|  |     void createStoreGoodsInventoryBySale(@Valid AddReqVO createReqVO); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 更新商品库存 |      * 更新商品库存 | ||||||
|      * |      * | ||||||
| @ -53,4 +62,6 @@ public interface StoreGoodsInventoryService { | |||||||
|      */ |      */ | ||||||
|     PageResult<StoreGoodsInventoryDO> getStoreGoodsInventoryPage(StoreGoodsInventoryPageReqVO pageReqVO); |     PageResult<StoreGoodsInventoryDO> getStoreGoodsInventoryPage(StoreGoodsInventoryPageReqVO pageReqVO); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     Integer getInventory(Integer goodsId,Long carteenId); | ||||||
| } | } | ||||||
| @ -1,16 +1,20 @@ | |||||||
| package cn.iocoder.yudao.module.member.service.storegoodsinventory; | package cn.iocoder.yudao.module.member.service.storegoodsinventory; | ||||||
|  |  | ||||||
| import cn.hutool.core.collection.CollectionUtil; | import cn.hutool.core.collection.CollectionUtil; | ||||||
|  | import cn.hutool.core.util.StrUtil; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
| import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||||||
| import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.AddReqVO; | import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.AddReqVO; | ||||||
| import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.GoodsInfoReqVO; | import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.GoodsInfoReqVO; | ||||||
| import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.StoreGoodsInventoryPageReqVO; | import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.StoreGoodsInventoryPageReqVO; | ||||||
| import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.StoreGoodsInventorySaveReqVO; | import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.StoreGoodsInventorySaveReqVO; | ||||||
|  | import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO; | ||||||
| import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventory.StoreGoodsInventoryDO; | import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventory.StoreGoodsInventoryDO; | ||||||
|  | import cn.iocoder.yudao.module.member.dal.mysql.storegoods.StoreGoodsMapper; | ||||||
| import cn.iocoder.yudao.module.member.dal.mysql.storegoodsinventory.StoreGoodsInventoryMapper; | import cn.iocoder.yudao.module.member.dal.mysql.storegoodsinventory.StoreGoodsInventoryMapper; | ||||||
| import cn.iocoder.yudao.module.member.enums.InventoryTypeEnum; | import cn.iocoder.yudao.module.member.enums.InventoryTypeEnum; | ||||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
|  | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||||
| import org.springframework.validation.annotation.Validated; | import org.springframework.validation.annotation.Validated; | ||||||
| @ -18,6 +22,7 @@ import org.springframework.validation.annotation.Validated; | |||||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||||
| import javax.validation.Valid; | import javax.validation.Valid; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
| import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||||||
| import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_GOODS_INVENTORY_NOT_ENOUGH; | import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_GOODS_INVENTORY_NOT_ENOUGH; | ||||||
| @ -34,42 +39,44 @@ public class StoreGoodsInventoryServiceImpl implements StoreGoodsInventoryServic | |||||||
|  |  | ||||||
|     @Resource |     @Resource | ||||||
|     private StoreGoodsInventoryMapper storeGoodsInventoryMapper; |     private StoreGoodsInventoryMapper storeGoodsInventoryMapper; | ||||||
|  |     @Resource | ||||||
|  |     private StoreGoodsMapper storeGoodsMapper; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     @Transactional(rollbackFor = Exception.class) |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public synchronized Integer createStoreGoodsInventory(@Valid AddReqVO createReqVO) { |     public synchronized Integer createStoreGoodsInventory(@Valid AddReqVO createReqVO) { | ||||||
|         Integer id = null; |         Integer id = null; | ||||||
|         List<GoodsInfoReqVO> list = createReqVO.getList(); |         List<GoodsInfoReqVO> list = createReqVO.getList(); | ||||||
|         for (GoodsInfoReqVO vo:list){ |         for (GoodsInfoReqVO vo : list) { | ||||||
|             LambdaQueryWrapper<StoreGoodsInventoryDO> wrapper = new LambdaQueryWrapper<>(); |             LambdaQueryWrapper<StoreGoodsInventoryDO> wrapper = new LambdaQueryWrapper<>(); | ||||||
|             wrapper.eq(StoreGoodsInventoryDO::getGoodsId,vo.getGoodsId()) |             wrapper.eq(StoreGoodsInventoryDO::getGoodsId, vo.getGoodsId()) | ||||||
|                     .eq(StoreGoodsInventoryDO::getCarteenId,vo.getCarteenId()); |                     .eq(StoreGoodsInventoryDO::getCarteenId, vo.getCarteenId()); | ||||||
|             List<StoreGoodsInventoryDO> storeGoodsInventoryDOS = storeGoodsInventoryMapper.selectList(wrapper); |             List<StoreGoodsInventoryDO> storeGoodsInventoryDOS = storeGoodsInventoryMapper.selectList(wrapper); | ||||||
|             if(InventoryTypeEnum.IN.getCode().equals(createReqVO.getType())){ |             if (InventoryTypeEnum.IN.getCode().equals(createReqVO.getType())) { | ||||||
|                 if(CollectionUtil.isNotEmpty(storeGoodsInventoryDOS)){ |                 if (CollectionUtil.isNotEmpty(storeGoodsInventoryDOS)) { | ||||||
|                     StoreGoodsInventoryDO storeGoodsInventoryDO = storeGoodsInventoryDOS.get(0); |                     StoreGoodsInventoryDO storeGoodsInventoryDO = storeGoodsInventoryDOS.get(0); | ||||||
|                     storeGoodsInventoryDO.setNumber(storeGoodsInventoryDO.getNumber()+vo.getNumber()); |                     storeGoodsInventoryDO.setNumber(storeGoodsInventoryDO.getNumber() + vo.getNumber()); | ||||||
|                     storeGoodsInventoryDO.setWeight(storeGoodsInventoryDO.getWeight()+vo.getWeight()); |                     storeGoodsInventoryDO.setWeight(storeGoodsInventoryDO.getWeight() + vo.getWeight()); | ||||||
|                     storeGoodsInventoryMapper.updateById(storeGoodsInventoryDO); |                     storeGoodsInventoryMapper.updateById(storeGoodsInventoryDO); | ||||||
|                     id= storeGoodsInventoryDO.getId(); |                     id = storeGoodsInventoryDO.getId(); | ||||||
|                 }else { |                 } else { | ||||||
|                     StoreGoodsInventoryDO storeGoodsInventory = BeanUtils.toBean(createReqVO, StoreGoodsInventoryDO.class); |                     StoreGoodsInventoryDO storeGoodsInventory = BeanUtils.toBean(createReqVO, StoreGoodsInventoryDO.class); | ||||||
|                     storeGoodsInventoryMapper.insert(storeGoodsInventory); |                     storeGoodsInventoryMapper.insert(storeGoodsInventory); | ||||||
|                     id = storeGoodsInventory.getId(); |                     id = storeGoodsInventory.getId(); | ||||||
|                 } |                 } | ||||||
|             }else {// 出库 |             } else {// 出库 | ||||||
|                 if(CollectionUtil.isEmpty(storeGoodsInventoryDOS)){ |                 if (CollectionUtil.isEmpty(storeGoodsInventoryDOS)) { | ||||||
|                     throw exception(STORE_GOODS_INVENTORY_NOT_EXISTS); |                     throw exception(STORE_GOODS_INVENTORY_NOT_EXISTS); | ||||||
|                 } |                 } | ||||||
|                 StoreGoodsInventoryDO storeGoodsInventoryDO = storeGoodsInventoryDOS.get(0); |                 StoreGoodsInventoryDO storeGoodsInventoryDO = storeGoodsInventoryDOS.get(0); | ||||||
|                 if(storeGoodsInventoryDO.getNumber()<vo.getNumber()){ |                 if (storeGoodsInventoryDO.getNumber() < vo.getNumber()) { | ||||||
|                     throw exception(STORE_GOODS_INVENTORY_NOT_ENOUGH); |                     throw exception(STORE_GOODS_INVENTORY_NOT_ENOUGH); | ||||||
|                 } |                 } | ||||||
|                 if(storeGoodsInventoryDO.getWeight()<vo.getWeight()){ |                 if (storeGoodsInventoryDO.getWeight() < vo.getWeight()) { | ||||||
|                     throw exception(STORE_GOODS_INVENTORY_NOT_ENOUGH); |                     throw exception(STORE_GOODS_INVENTORY_NOT_ENOUGH); | ||||||
|                 } |                 } | ||||||
|                 storeGoodsInventoryDO.setNumber(storeGoodsInventoryDO.getNumber()-vo.getNumber()); |                 storeGoodsInventoryDO.setNumber(storeGoodsInventoryDO.getNumber() - vo.getNumber()); | ||||||
|                 storeGoodsInventoryDO.setWeight(storeGoodsInventoryDO.getWeight()-vo.getWeight()); |                 storeGoodsInventoryDO.setWeight(storeGoodsInventoryDO.getWeight() - vo.getWeight()); | ||||||
|                 storeGoodsInventoryMapper.updateById(storeGoodsInventoryDO); |                 storeGoodsInventoryMapper.updateById(storeGoodsInventoryDO); | ||||||
|                 id = storeGoodsInventoryDO.getId(); |                 id = storeGoodsInventoryDO.getId(); | ||||||
|             } |             } | ||||||
| @ -79,6 +86,27 @@ public class StoreGoodsInventoryServiceImpl implements StoreGoodsInventoryServic | |||||||
|         return id; |         return id; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void createStoreGoodsInventoryBySale(AddReqVO createReqVO) { | ||||||
|  |         List<GoodsInfoReqVO> list = createReqVO.getList(); | ||||||
|  |         for (GoodsInfoReqVO vo : list) { | ||||||
|  |             LambdaQueryWrapper<StoreGoodsInventoryDO> wrapper = new LambdaQueryWrapper<>(); | ||||||
|  |             wrapper.eq(StoreGoodsInventoryDO::getGoodsId, vo.getGoodsId()) | ||||||
|  |                     .eq(StoreGoodsInventoryDO::getCarteenId, vo.getCarteenId()); | ||||||
|  |             List<StoreGoodsInventoryDO> storeGoodsInventoryDOS = storeGoodsInventoryMapper.selectList(wrapper); | ||||||
|  |  | ||||||
|  |             if (CollectionUtil.isNotEmpty(storeGoodsInventoryDOS)) { | ||||||
|  |                 StoreGoodsInventoryDO storeGoodsInventoryDO = storeGoodsInventoryDOS.get(0); | ||||||
|  |                 storeGoodsInventoryDO.setNumber(storeGoodsInventoryDO.getNumber()); | ||||||
|  |                 storeGoodsInventoryDO.setWeight(storeGoodsInventoryDO.getWeight()); | ||||||
|  |                 storeGoodsInventoryMapper.updateById(storeGoodsInventoryDO); | ||||||
|  |             } else { | ||||||
|  |                 StoreGoodsInventoryDO storeGoodsInventory = BeanUtils.toBean(createReqVO, StoreGoodsInventoryDO.class); | ||||||
|  |                 storeGoodsInventoryMapper.insert(storeGoodsInventory); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void updateStoreGoodsInventory(StoreGoodsInventorySaveReqVO updateReqVO) { |     public void updateStoreGoodsInventory(StoreGoodsInventorySaveReqVO updateReqVO) { | ||||||
|         // 校验存在 |         // 校验存在 | ||||||
| @ -109,7 +137,25 @@ public class StoreGoodsInventoryServiceImpl implements StoreGoodsInventoryServic | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public PageResult<StoreGoodsInventoryDO> getStoreGoodsInventoryPage(StoreGoodsInventoryPageReqVO pageReqVO) { |     public PageResult<StoreGoodsInventoryDO> getStoreGoodsInventoryPage(StoreGoodsInventoryPageReqVO pageReqVO) { | ||||||
|  |         if (StrUtil.isNotBlank(pageReqVO.getGoodsName())){ | ||||||
|  |             List<StoreGoodsDO> storeGoodsDOS = storeGoodsMapper.selectList(Wrappers.<StoreGoodsDO>lambdaQuery() | ||||||
|  |                     .like(StoreGoodsDO::getGoodsName, pageReqVO.getGoodsName())); | ||||||
|  |             if(CollectionUtil.isNotEmpty(storeGoodsDOS)){ | ||||||
|  |                 List<Integer> collect = storeGoodsDOS.stream().map(StoreGoodsDO::getGoodsId).collect(Collectors.toList()); | ||||||
|  |                 pageReqVO.setGoodsIds(collect); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|         return storeGoodsInventoryMapper.selectPage(pageReqVO); |         return storeGoodsInventoryMapper.selectPage(pageReqVO); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Integer getInventory(Integer goodsId, Long carteenId) { | ||||||
|  |         List<StoreGoodsInventoryDO> list = storeGoodsInventoryMapper.selectList(Wrappers.<StoreGoodsInventoryDO>lambdaQuery() | ||||||
|  |                 .eq(StoreGoodsInventoryDO::getGoodsId, goodsId) | ||||||
|  |                 .eq(StoreGoodsInventoryDO::getCarteenId, carteenId)); | ||||||
|  |         if (CollectionUtil.isNotEmpty(list)) { | ||||||
|  |             return list.get(0).getNumber(); | ||||||
|  |         } | ||||||
|  |         return 0; | ||||||
|  |     } | ||||||
| } | } | ||||||
| @ -1,13 +1,15 @@ | |||||||
| package cn.iocoder.yudao.module.member.service.storesalegoods; | package cn.iocoder.yudao.module.member.service.storesalegoods; | ||||||
|  |  | ||||||
| import java.util.*; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
| import javax.validation.*; | import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.AddReqVO; | ||||||
| import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.*; | import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.StoreSaleGoodsPageReqVO; | ||||||
|  | import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.StoreSaleGoodsSaveBatchVO; | ||||||
|  | import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.StoreSaleGoodsSaveReqVO; | ||||||
| import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreSaleGoodsDto; | import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreSaleGoodsDto; | ||||||
| import cn.iocoder.yudao.module.member.dal.dataobject.storesalegoods.StoreSaleGoodsDO; | import cn.iocoder.yudao.module.member.dal.dataobject.storesalegoods.StoreSaleGoodsDO; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; |  | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageParam; | import javax.validation.Valid; | ||||||
| import org.springframework.web.bind.annotation.RequestBody; | import java.util.List; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 售卖商品 Service 接口 |  * 售卖商品 Service 接口 | ||||||
| @ -22,7 +24,7 @@ public interface StoreSaleGoodsService { | |||||||
|      * @param createReqVO 创建信息 |      * @param createReqVO 创建信息 | ||||||
|      * @return 编号 |      * @return 编号 | ||||||
|      */ |      */ | ||||||
|     Integer createStoreSaleGoods(@Valid StoreSaleGoodsSaveBatchVO createReqVO); |     AddReqVO createStoreSaleGoods(@Valid StoreSaleGoodsSaveBatchVO createReqVO); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 更新售卖商品 |      * 更新售卖商品 | ||||||
|  | |||||||
| @ -2,33 +2,36 @@ package cn.iocoder.yudao.module.member.service.storesalegoods; | |||||||
|  |  | ||||||
| import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||||
| import cn.hutool.core.collection.CollectionUtil; | import cn.hutool.core.collection.CollectionUtil; | ||||||
|  | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
|  | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||||||
|  | import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.AddReqVO; | ||||||
|  | import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.GoodsInfoReqVO; | ||||||
|  | import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.StoreSaleGoodsPageReqVO; | ||||||
|  | import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.StoreSaleGoodsSaveBatchVO; | ||||||
|  | import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.StoreSaleGoodsSaveReqVO; | ||||||
| import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreGoodsDto; | import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreGoodsDto; | ||||||
| import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreSaleGoodsDto; | import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreSaleGoodsDto; | ||||||
|  | import cn.iocoder.yudao.module.member.dal.dataobject.storesalegoods.StoreSaleGoodsDO; | ||||||
|  | import cn.iocoder.yudao.module.member.dal.mysql.storesalegoods.StoreSaleGoodsMapper; | ||||||
|  | import cn.iocoder.yudao.module.member.enums.InventoryTypeEnum; | ||||||
|  | import cn.iocoder.yudao.module.member.enums.OutTypeEnum; | ||||||
|  | import cn.iocoder.yudao.module.member.service.storegoodsinventory.StoreGoodsInventoryService; | ||||||
| import cn.iocoder.yudao.module.system.api.cashregisterinfo.CashregisterinfoApi; | import cn.iocoder.yudao.module.system.api.cashregisterinfo.CashregisterinfoApi; | ||||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |  | ||||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
|  | import org.springframework.transaction.annotation.Transactional; | ||||||
|  | import org.springframework.validation.annotation.Validated; | ||||||
|  |  | ||||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||||
|  | import java.util.ArrayList; | ||||||
| import org.springframework.validation.annotation.Validated; | import java.util.Arrays; | ||||||
| import org.springframework.transaction.annotation.Transactional; | import java.util.Collections; | ||||||
|  | import java.util.List; | ||||||
| import java.util.*; |  | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
| import java.util.stream.Stream; |  | ||||||
|  |  | ||||||
| import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.*; |  | ||||||
| import cn.iocoder.yudao.module.member.dal.dataobject.storesalegoods.StoreSaleGoodsDO; |  | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; |  | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageParam; |  | ||||||
| import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |  | ||||||
|  |  | ||||||
| import cn.iocoder.yudao.module.member.dal.mysql.storesalegoods.StoreSaleGoodsMapper; |  | ||||||
|  |  | ||||||
| import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||||||
| import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; | import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_SALE_GOODS_NOT_EXISTS; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 售卖商品 Service 实现类 |  * 售卖商品 Service 实现类 | ||||||
| @ -43,11 +46,16 @@ public class StoreSaleGoodsServiceImpl implements StoreSaleGoodsService { | |||||||
|     private StoreSaleGoodsMapper storeSaleGoodsMapper; |     private StoreSaleGoodsMapper storeSaleGoodsMapper; | ||||||
|     @Resource |     @Resource | ||||||
|     private CashregisterinfoApi cashregisterinfoApi; |     private CashregisterinfoApi cashregisterinfoApi; | ||||||
|  |     @Resource | ||||||
|  |     private StoreGoodsInventoryService storeGoodsInventoryService; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public Integer createStoreSaleGoods(StoreSaleGoodsSaveBatchVO createReqVO) { |     @Transactional(rollbackFor = Exception.class) | ||||||
|  |     public AddReqVO createStoreSaleGoods(StoreSaleGoodsSaveBatchVO createReqVO) { | ||||||
|         List<StoreSaleGoodsDO> addList = new ArrayList<>(); |         List<StoreSaleGoodsDO> addList = new ArrayList<>(); | ||||||
|  |  | ||||||
|  |         AddReqVO addReqVO = new AddReqVO(); | ||||||
|  |         List<GoodsInfoReqVO>  list = new ArrayList<>(); | ||||||
|         List<Long> carteenIds = createReqVO.getCarteenIds(); |         List<Long> carteenIds = createReqVO.getCarteenIds(); | ||||||
|         List<Integer> goodsIds = createReqVO.getGoodsIds(); |         List<Integer> goodsIds = createReqVO.getGoodsIds(); | ||||||
|         for (Long carteenId : carteenIds) { |         for (Long carteenId : carteenIds) { | ||||||
| @ -63,10 +71,24 @@ public class StoreSaleGoodsServiceImpl implements StoreSaleGoodsService { | |||||||
|                 storeSaleGoods.setCarteenId(carteenId); |                 storeSaleGoods.setCarteenId(carteenId); | ||||||
|                 storeSaleGoods.setGoodsId(goodsId); |                 storeSaleGoods.setGoodsId(goodsId); | ||||||
|                 addList.add(storeSaleGoods); |                 addList.add(storeSaleGoods); | ||||||
|  |  | ||||||
|  |                 GoodsInfoReqVO vo = new GoodsInfoReqVO(); | ||||||
|  |                 vo.setGoodsId(goodsId); | ||||||
|  |                 vo.setNumber(createReqVO.getNumber()); | ||||||
|  |                 vo.setWeight(0d); | ||||||
|  |                 vo.setCarteenId(carteenId); | ||||||
|  |                 list.add(vo); | ||||||
|  |  | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         storeSaleGoodsMapper.insertBatch(addList); |         storeSaleGoodsMapper.insertBatch(addList); | ||||||
|         return addList.size(); |         //库存 | ||||||
|  |         addReqVO.setList(list); | ||||||
|  |         addReqVO.setType(InventoryTypeEnum.IN.getCode()); | ||||||
|  |         addReqVO.setOutType(OutTypeEnum.SYSTEM_ADD.getCode()); | ||||||
|  |         storeGoodsInventoryService.createStoreGoodsInventoryBySale(addReqVO); | ||||||
|  |  | ||||||
|  |         return addReqVO; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|  | |||||||
| @ -10,8 +10,9 @@ | |||||||
|      --> |      --> | ||||||
|  |  | ||||||
|     <select id="getSaleGoodsPage" resultType="cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.StoreSaleGoodsPageVO"> |     <select id="getSaleGoodsPage" resultType="cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.StoreSaleGoodsPageVO"> | ||||||
|         select sg.id,sg.carteen_id,sg.create_time,ms.category_id,ms.goods_name,ms.img,ms.sales_model,ms.price,sg.goods_id |         select sg.id,sg.carteen_id,sg.create_time,ms.category_id,ms.goods_name,ms.img,ms.sales_model,ms.price,sg.goods_id,gi.number | ||||||
|         from member_store_sale_goods sg left join member_store_goods ms on sg.goods_id = ms.goods_id |         from member_store_sale_goods sg left join member_store_goods ms on sg.goods_id = ms.goods_id | ||||||
|  |         left join member_store_goods_inventory gi on gi.carteen_id = sg.carteen_id and gi.goods_id = sg.goods_id | ||||||
|         where sg.deleted = false |         where sg.deleted = false | ||||||
|         <if test="vo.categoryId != null "> |         <if test="vo.categoryId != null "> | ||||||
|             and ms.category_id = #{vo.categoryId} |             and ms.category_id = #{vo.categoryId} | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 zengtao01
					zengtao01