From fef8af28644d9260aa5e1b26d40f9766f52664f0 Mon Sep 17 00:00:00 2001 From: liujiang <569804566@qq.com> Date: Wed, 2 Apr 2025 22:43:54 +0800 Subject: [PATCH] =?UTF-8?q?master=EF=BC=9A=E9=94=80=E5=94=AE=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E3=80=81=E5=85=A5=E5=BA=93=E5=8D=95=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=BA=93=E5=AD=98=E6=A8=A1=E5=9D=97=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xkt/StoreCustomerController.java | 8 +- .../xkt/StoreProductController.java | 10 +- .../xkt/StoreProductStockController.java | 117 +++++-- .../controller/xkt/StoreSaleController.java | 37 +-- .../storeProdStock/StoreProdStockPageVO.java | 27 ++ .../vo/storeProdStock/StoreProdStockVO.java | 51 +++ .../xkt/vo/storeSale/StoreSaleVO.java | 2 +- .../java/com/ruoyi/common/core/page/Page.java | 10 - .../xkt/domain/StoreProductDemandDetail.java | 31 +- .../ruoyi/xkt/domain/StoreProductStock.java | 51 +-- .../com/ruoyi/xkt/domain/StoreSaleDetail.java | 8 +- .../domain/StoreSaleRefundRecordDetail.java | 8 +- .../ruoyi/xkt/domain/UserShoppingCart.java | 8 +- .../StoreProdStockPageDTO.java | 26 ++ .../StoreProdStockPageResDTO.java | 61 ++++ .../StoreProdStockResDTO.java | 61 ++++ .../StoreProdStockUpdateDTO.java | 57 ++++ .../ruoyi/xkt/dto/storeSale/StoreSaleDTO.java | 4 +- .../xkt/mapper/StoreProductStockMapper.java | 11 + .../service/IStoreProductStockService.java | 57 +++- .../StoreProductBarcodeRecordServiceImpl.java | 1 + .../StoreProductColorSizeServiceImpl.java | 2 + .../StoreProductDemandDetailServiceImpl.java | 2 + .../impl/StoreProductStockServiceImpl.java | 304 +++++++++++++++++- ...roductStorageDemandDeducteServiceImpl.java | 2 + .../StoreProductStorageDetailServiceImpl.java | 1 + .../impl/StoreProductStorageServiceImpl.java | 19 +- .../impl/StoreRoleAccountServiceImpl.java | 2 + .../impl/StoreRoleMenuServiceImpl.java | 2 + .../service/impl/StoreRoleServiceImpl.java | 2 + .../impl/StoreSaleDetailServiceImpl.java | 2 + .../StoreSaleRefundRecordServiceImpl.java | 2 + .../service/impl/StoreSaleServiceImpl.java | 149 ++++++--- .../xkt/service/impl/StoreServiceImpl.java | 2 + .../xkt/service/impl/SysFileServiceImpl.java | 2 + .../mapper/StoreProductStockMapper.xml | 18 ++ 36 files changed, 969 insertions(+), 188 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockPageVO.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockVO.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockPageDTO.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockPageResDTO.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockResDTO.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockUpdateDTO.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreCustomerController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreCustomerController.java index a0c89de86..674bc8378 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreCustomerController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreCustomerController.java @@ -48,7 +48,7 @@ public class StoreCustomerController extends XktBaseController { @GetMapping(value = "/fuzzy") public R fuzzyQueryColorList(@RequestParam(value = "cusName", required = false) String cusName, @RequestParam("storeId") Long storeId) { - return success(BeanUtil.copyToList(storeCusService.fuzzyQueryList(storeId, cusName), StoreCusFuzzyResVO.class)); + return R.ok(BeanUtil.copyToList(storeCusService.fuzzyQueryList(storeId, cusName), StoreCusFuzzyResVO.class)); } @@ -60,7 +60,7 @@ public class StoreCustomerController extends XktBaseController { @Log(title = "新增档口客户", businessType = BusinessType.INSERT) @PostMapping public R add(@Validated @RequestBody StoreCusVO storeCusVO) { - return success(storeCusService.create(BeanUtil.toBean(storeCusVO, StoreCusDTO.class))); + return R.ok(storeCusService.create(BeanUtil.toBean(storeCusVO, StoreCusDTO.class))); } /** @@ -71,7 +71,7 @@ public class StoreCustomerController extends XktBaseController { @Log(title = "修改档口客户", businessType = BusinessType.UPDATE) @PutMapping public R edit(@Validated @RequestBody StoreCusVO storeCusVO) { - return success(storeCusService.updateStoreCus(BeanUtil.toBean(storeCusVO, StoreCusDTO.class))); + return R.ok(storeCusService.updateStoreCus(BeanUtil.toBean(storeCusVO, StoreCusDTO.class))); } /** @@ -93,7 +93,7 @@ public class StoreCustomerController extends XktBaseController { @ApiOperation(value = "获取档口客户详细信息", httpMethod = "GET", response = R.class) @GetMapping(value = "/{storeCusId}") public R getInfo(@PathVariable("storeCusId") Long storeCusId) { - return success(BeanUtil.toBean(storeCusService.selectStoreCustomerByStoreCusId(storeCusId), StoreCusVO.class)); + return R.ok(BeanUtil.toBean(storeCusService.selectStoreCustomerByStoreCusId(storeCusId), StoreCusVO.class)); } /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductController.java index 501f9e86b..ee9f37148 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductController.java @@ -47,7 +47,7 @@ public class StoreProductController extends XktBaseController { @GetMapping(value = "/fuzzy") public R fuzzyQueryColorList(@RequestParam(value = "prodArtNum", required = false) String prodArtNum, @RequestParam("storeId") Long storeId) { - return success(BeanUtil.copyToList(storeProdService.fuzzyQueryList(storeId, prodArtNum), StoreProdFuzzyResVO.class)); + return R.ok(BeanUtil.copyToList(storeProdService.fuzzyQueryList(storeId, prodArtNum), StoreProdFuzzyResVO.class)); } /** @@ -79,7 +79,7 @@ public class StoreProductController extends XktBaseController { @ApiOperation(value = "获取档口商品详细信息", httpMethod = "GET", response = R.class) @GetMapping(value = "/{storeProdId}") public R getInfo(@PathVariable("storeProdId") Long storeProdId) { - return success(BeanUtil.toBean(storeProdService.selectStoreProductByStoreProdId(storeProdId), StoreProdResVO.class)); + return R.ok(BeanUtil.toBean(storeProdService.selectStoreProductByStoreProdId(storeProdId), StoreProdResVO.class)); } /** @@ -90,7 +90,7 @@ public class StoreProductController extends XktBaseController { @ApiOperation(value = "新增档口商品", httpMethod = "POST", response = R.class) @PostMapping public R add(@Validated @RequestBody StoreProdVO storeProdVO) { - return success(storeProdService.insertStoreProduct(BeanUtil.toBean(storeProdVO, StoreProdDTO.class))); + return R.ok(storeProdService.insertStoreProduct(BeanUtil.toBean(storeProdVO, StoreProdDTO.class))); } /** @@ -101,7 +101,7 @@ public class StoreProductController extends XktBaseController { @Log(title = "档口商品", businessType = BusinessType.UPDATE) @PutMapping("/{storeProdId}") public R edit(@PathVariable Long storeProdId, @Validated @RequestBody StoreProdVO storeProdVO) { - return success(storeProdService.updateStoreProduct(storeProdId, BeanUtil.toBean(storeProdVO, StoreProdDTO.class))); + return R.ok(storeProdService.updateStoreProduct(storeProdId, BeanUtil.toBean(storeProdVO, StoreProdDTO.class))); } /** @@ -123,7 +123,7 @@ public class StoreProductController extends XktBaseController { @ApiOperation(value = "获取档口图片空间", httpMethod = "GET", response = R.class) @GetMapping(value = "/pic-space/{storeId}") public R getStoreProductPicSpace(@PathVariable("storeId") Long storeId) { - return success(BeanUtil.toBean(storeProdService.getStoreProductPicSpace(storeId), StoreProdPicSpaceResVO.class)); + return R.ok(BeanUtil.toBean(storeProdService.getStoreProductPicSpace(storeId), StoreProdPicSpaceResVO.class)); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStockController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStockController.java index 3aab171b5..3760bdf60 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStockController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStockController.java @@ -1,18 +1,33 @@ package com.ruoyi.web.controller.xkt; +import cn.hutool.core.bean.BeanUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.XktBaseController; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.page.Page; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.web.controller.xkt.vo.storeCustomer.StoreCusPageVO; +import com.ruoyi.web.controller.xkt.vo.storeProdStock.StoreProdStockPageVO; +import com.ruoyi.web.controller.xkt.vo.storeProdStock.StoreProdStockVO; import com.ruoyi.xkt.domain.StoreProductStock; +import com.ruoyi.xkt.dto.storeCustomer.StoreCusPageDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockUpdateDTO; import com.ruoyi.xkt.service.IStoreProductStockService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.compress.utils.Lists; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; +import java.util.Collections; import java.util.List; /** @@ -21,33 +36,87 @@ import java.util.List; * @author ruoyi * @date 2025-03-26 */ +@Api(tags = "档口商品库存") @RestController +@RequiredArgsConstructor @RequestMapping("/rest/v1/prod-stocks") public class StoreProductStockController extends XktBaseController { - @Autowired - private IStoreProductStockService storeProductStockService; + final IStoreProductStockService storeProdStockService; // TODO 商品销售/出库 时读货号,然后查询当前货号颜色的库存 // TODO 商品销售/出库 时读货号,然后查询当前货号颜色的库存 - // TODO 销售出库时扣件库存 // TODO 销售出库时扣件库存 // TODO 销售出库时扣件库存 // TODO 销售出库时扣件库存 // TODO 销售出库时扣件库存 + /** + * 查询档口库存列表 + */ + @PreAuthorize("@ss.hasPermi('system:stock:list')") + @ApiOperation(value = "查询档口库存列表", httpMethod = "POST", response = R.class) + @PostMapping("/page") + public R selectPage(@Validated @RequestBody StoreProdStockPageVO pageVO) { + return R.ok(storeProdStockService.selectPage(BeanUtil.toBean(pageVO, StoreProdStockPageDTO.class))); + } + + + /** + * 档口商品库存清零 + */ + @PreAuthorize("@ss.hasPermi('system:stock:edit')") + @ApiOperation(value = "档口商品库存清零", httpMethod = "PUT", response = R.class) + @Log(title = "档口商品库存清零", businessType = BusinessType.UPDATE) + @PutMapping("/clear-zero/{storeId}/{storeProdStockId}") + public R clearStockToZero(@PathVariable("storeId") Long storeId, @PathVariable("storeProdStockId") Long storeProdStockId) { + return R.ok(storeProdStockService.clearStockToZero(storeId, storeProdStockId)); + } + + /** + * 直接调整档口商品库存值 + */ + @PreAuthorize("@ss.hasPermi('system:stock:edit')") + @ApiOperation(value = "直接调整档口商品库存值", httpMethod = "PUT", response = R.class) + @Log(title = "直接调整档口商品库存值", businessType = BusinessType.UPDATE) + @PutMapping("/update-stock/{storeId}") + public R updateStock(@PathVariable("storeId") Long storeId, @RequestBody StoreProdStockVO prodStockVO) { + return R.ok(storeProdStockService.updateStock(storeId, Collections.singletonList(BeanUtil.toBean(prodStockVO, StoreProdStockUpdateDTO.class)), 0)); + } + + /** + * 查询档口商品库存详情 + */ + @PreAuthorize("@ss.hasPermi('system:stock:query')") + @ApiOperation(value = "查询档口商品库存详情", httpMethod = "GET", response = R.class) + @GetMapping(value = "/{storeId}/{storeProdStockId}") + public R getInfo(@PathVariable("storeId") Long storeId, @PathVariable("storeProdStockId") Long storeProdStockId) { + return R.ok(storeProdStockService.selectByStoreProdStockId(storeId, storeProdStockId)); + } + + /** + * 根据货号查询档口商品库存 + */ + @PreAuthorize("@ss.hasPermi('system:stock:query')") + @ApiOperation(value = "根据货号查询档口商品库存", httpMethod = "GET", response = R.class) + @GetMapping(value = "/{storeId}/prod-art-num/{prodArtNum}") + public R getInfo(@PathVariable("storeId") Long storeId, @PathVariable("prodArtNum") String prodArtNum) { + return R.ok(storeProdStockService.selectByStoreIdAndProdArtNum(storeId, prodArtNum)); + } + + + + + + + + + - // TODO 新增入款单库存会变化 - // TODO 新增入款单库存会变化 - // TODO 新增入款单库存会变化 - // TODO 新增入款单库存会变化 - // TODO 新增入款单库存会变化 - // TODO 新增入款单库存会变化 - // TODO 新增入款单库存会变化 @@ -58,7 +127,7 @@ public class StoreProductStockController extends XktBaseController { @GetMapping("/list") public TableDataInfo list(StoreProductStock storeProductStock) { startPage(); - List list = storeProductStockService.selectStoreProductStockList(storeProductStock); + List list = storeProdStockService.selectStoreProductStockList(storeProductStock); return getDataTable(list); } @@ -69,19 +138,11 @@ public class StoreProductStockController extends XktBaseController { @Log(title = "档口商品库存", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, StoreProductStock storeProductStock) { - List list = storeProductStockService.selectStoreProductStockList(storeProductStock); + List list = storeProdStockService.selectStoreProductStockList(storeProductStock); ExcelUtil util = new ExcelUtil(StoreProductStock.class); util.exportExcel(response, list, "档口商品库存数据"); } - /** - * 获取档口商品库存详细信息 - */ - @PreAuthorize("@ss.hasPermi('system:stock:query')") - @GetMapping(value = "/{storeProdStockId}") - public R getInfo(@PathVariable("storeProdStockId") Long storeProdStockId) { - return success(storeProductStockService.selectStoreProductStockByStoreProdStockId(storeProdStockId)); - } /** * 新增档口商品库存 @@ -90,18 +151,10 @@ public class StoreProductStockController extends XktBaseController { @Log(title = "档口商品库存", businessType = BusinessType.INSERT) @PostMapping public R add(@RequestBody StoreProductStock storeProductStock) { - return success(storeProductStockService.insertStoreProductStock(storeProductStock)); + return success(storeProdStockService.insertStoreProductStock(storeProductStock)); } - /** - * 修改档口商品库存 - */ - @PreAuthorize("@ss.hasPermi('system:stock:edit')") - @Log(title = "档口商品库存", businessType = BusinessType.UPDATE) - @PutMapping - public R edit(@RequestBody StoreProductStock storeProductStock) { - return success(storeProductStockService.updateStoreProductStock(storeProductStock)); - } + /** * 删除档口商品库存 @@ -110,6 +163,8 @@ public class StoreProductStockController extends XktBaseController { @Log(title = "档口商品库存", businessType = BusinessType.DELETE) @DeleteMapping("/{storeProdStockIds}") public R remove(@PathVariable Long[] storeProdStockIds) { - return success(storeProductStockService.deleteStoreProductStockByStoreProdStockIds(storeProdStockIds)); + return success(storeProdStockService.deleteStoreProductStockByStoreProdStockIds(storeProdStockIds)); } + + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreSaleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreSaleController.java index 5437012de..faacb997a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreSaleController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreSaleController.java @@ -48,7 +48,7 @@ public class StoreSaleController extends XktBaseController { @GetMapping("/cus-overall") public R getCusGeneralSale(@RequestParam("days") Integer days, @RequestParam("storeId") Long storeId, @RequestParam("storeCusId") Long storeCusId) { - return success(BeanUtil.toBean(storeSaleService.getCusGeneralSale(days, storeId, storeCusId), StoreCusGeneralSaleVO.class)); + return R.ok(BeanUtil.toBean(storeSaleService.getCusGeneralSale(days, storeId, storeCusId), StoreCusGeneralSaleVO.class)); } /** @@ -57,8 +57,8 @@ public class StoreSaleController extends XktBaseController { @PreAuthorize("@ss.hasPermi('system:sale:list')") @ApiOperation(value = "查询档口销售出库列表", httpMethod = "POST", response = R.class) @PostMapping("/page") - public Page page(@Validated @RequestBody StoreSalePageVO salePageVO) { - return storeSaleService.page(BeanUtil.toBean(salePageVO, StoreSalePageDTO.class)); + public R page(@Validated @RequestBody StoreSalePageVO salePageVO) { + return R.ok(storeSaleService.page(BeanUtil.toBean(salePageVO, StoreSalePageDTO.class))); } /** @@ -69,32 +69,15 @@ public class StoreSaleController extends XktBaseController { @Log(title = "档口销售出库", businessType = BusinessType.INSERT) @PostMapping public R add(@Validated @RequestBody StoreSaleVO storeSaleVO) { - - - // TODO 扣件库存 - // TODO 扣件库存 - // TODO 扣件库存 - // TODO 扣件库存 - // TODO 扣件库存 - // TODO 扣件库存 - - - // TODO 增加库存 - // TODO 增加库存 - // TODO 增加库存 - // TODO 增加库存 - // TODO 增加库存 - // TODO 增加库存 - - return success(storeSaleService.insertStoreSale(BeanUtil.toBean(storeSaleVO, StoreSaleDTO.class))); + return R.ok(storeSaleService.insertStoreSale(BeanUtil.toBean(storeSaleVO, StoreSaleDTO.class))); } /** - * 修改档口销售出库 + * 返单后,更新档口销售出库 */ @PreAuthorize("@ss.hasPermi('system:sale:edit')") @Log(title = "修改档口销售出库", businessType = BusinessType.UPDATE) - @ApiOperation(value = "修改档口销售出库", httpMethod = "PUT", response = R.class) + @ApiOperation(value = "返单后,更新档口销售出库", httpMethod = "PUT", response = R.class) @PutMapping public R edit(@Validated @RequestBody StoreSaleVO storeSaleVO) { @@ -112,7 +95,7 @@ public class StoreSaleController extends XktBaseController { // TODO 增加库存 // TODO 增加库存 // TODO 增加库存 - return success(storeSaleService.updateStoreSale(BeanUtil.toBean(storeSaleVO, StoreSaleDTO.class))); + return R.ok(storeSaleService.updateStoreSale(BeanUtil.toBean(storeSaleVO, StoreSaleDTO.class))); } /** @@ -122,7 +105,7 @@ public class StoreSaleController extends XktBaseController { @ApiOperation(value = "查询档口销售出库详情", httpMethod = "GET", response = R.class) @GetMapping(value = "/{storeSaleId}") public R getInfo(@PathVariable("storeSaleId") Long storeSaleId) { - return success(storeSaleService.selectStoreSaleByStoreSaleId(storeSaleId)); + return R.ok(storeSaleService.selectStoreSaleByStoreSaleId(storeSaleId)); } /** @@ -134,7 +117,7 @@ public class StoreSaleController extends XktBaseController { @PutMapping("/clear-debt") public R clearStoreCusDebt(@Validated @RequestBody StoreSalePayStatusVO payStatusVO) { storeSaleService.clearStoreCusDebt(BeanUtil.toBean(payStatusVO, StoreSalePayStatusDTO.class)); - return success(); + return R.ok(); } /** @@ -159,7 +142,7 @@ public class StoreSaleController extends XktBaseController { // TODO 增加库存 // TODO 增加库存 // TODO 增加库存 - return success(storeSaleService.deleteStoreSaleByStoreSaleId(storeSaleId)); + return R.ok(storeSaleService.deleteStoreSaleByStoreSaleId(storeSaleId)); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockPageVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockPageVO.java new file mode 100644 index 000000000..5c5b2525a --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockPageVO.java @@ -0,0 +1,27 @@ +package com.ruoyi.web.controller.xkt.vo.storeProdStock; + +import com.ruoyi.web.controller.xkt.vo.BasePageVO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@EqualsAndHashCode(callSuper = true) +@ApiModel("档口库存分页查询入参") +@Data +public class StoreProdStockPageVO extends BasePageVO { + + @ApiModelProperty(name = "档口ID") + @NotNull(message = "档口ID不能为空") + private Long storeId; + @ApiModelProperty(name = "商品货号") + private String prodArtNum; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockVO.java new file mode 100644 index 000000000..203162bb6 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockVO.java @@ -0,0 +1,51 @@ +package com.ruoyi.web.controller.xkt.vo.storeProdStock; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("档口商品") +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StoreProdStockVO { + + @ApiModelProperty(name = "档口商品库存ID") + private Long storeProdStockId; + @ApiModelProperty(name = "颜色名称") + private String colorName; + @ApiModelProperty(name = "尺码30") + private Integer size30; + @ApiModelProperty(name = "尺码31") + private Integer size31; + @ApiModelProperty(name = "尺码32") + private Integer size32; + @ApiModelProperty(name = "尺码33") + private Integer size33; + @ApiModelProperty(name = "尺码34") + private Integer size34; + @ApiModelProperty(name = "尺码35") + private Integer size35; + @ApiModelProperty(name = "尺码36") + private Integer size36; + @ApiModelProperty(name = "尺码37") + private Integer size37; + @ApiModelProperty(name = "尺码38") + private Integer size38; + @ApiModelProperty(name = "尺码39") + private Integer size39; + @ApiModelProperty(name = "尺码40") + private Integer size40; + @ApiModelProperty(name = "尺码41") + private Integer size41; + @ApiModelProperty(name = "尺码42") + private Integer size42; + @ApiModelProperty(name = "尺码43") + private Integer size43; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeSale/StoreSaleVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeSale/StoreSaleVO.java index 7423e3a41..2179102ec 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeSale/StoreSaleVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeSale/StoreSaleVO.java @@ -56,7 +56,7 @@ public class StoreSaleVO { private Long storeProdId; @NotNull(message = "档口商品颜色尺码ID不能为空!") @ApiModelProperty(name = "档口商品颜色尺码ID") - private Long storeProdColorSizeId; + private Long storeProdColorId; @ApiModelProperty(name = "颜色") private String colorName; @ApiModelProperty(name = "尺码") diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/Page.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/Page.java index ef2a227be..bef47f9e2 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/Page.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/Page.java @@ -48,16 +48,6 @@ public class Page implements Serializable { */ private List list; - /** - * 消息状态码 - */ - private int code = HttpStatus.SUCCESS; - - /** - * 消息内容 - */ - private String msg = "操作成功"; - public static Page convert(PageInfo pageInfo) { return BeanUtil.toBean(pageInfo, Page.class); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductDemandDetail.java b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductDemandDetail.java index 0dc2863ae..85c961bc3 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductDemandDetail.java +++ b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductDemandDetail.java @@ -1,5 +1,6 @@ package com.ruoyi.xkt.domain; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.XktBaseEntity; @@ -47,84 +48,86 @@ public class StoreProductDemandDetail extends XktBaseEntity { * 尺码30 */ @Excel(name = "尺码30") + @TableField("size_30") private Integer size30; - /** * 尺码31 */ @Excel(name = "尺码31") + @TableField("size_31") private Integer size31; - /** * 尺码32 */ @Excel(name = "尺码32") + @TableField("size_32") private Integer size32; - /** * 尺码33 */ @Excel(name = "尺码33") + @TableField("size_33") private Integer size33; - /** * 尺码34 */ - @Excel(name = "尺码34") - private Integer size34; + @Excel(name = "尺码34") + @TableField("size_34") + private Integer size34; /** * 尺码35 */ @Excel(name = "尺码35") + @TableField("size_35") private Integer size35; - /** * 尺码36 */ @Excel(name = "尺码36") + @TableField("size_36") private Integer size36; - /** * 尺码37 */ @Excel(name = "尺码37") + @TableField("size_37") private Integer size37; - /** * 尺码38 */ @Excel(name = "尺码38") + @TableField("size_38") private Integer size38; - /** * 尺码39 */ @Excel(name = "尺码39") + @TableField("size_39") private Integer size39; - /** * 尺码40 */ @Excel(name = "尺码40") + @TableField("size_40") private Integer size40; - /** * 尺码41 */ @Excel(name = "尺码41") + @TableField("size_41") private Integer size41; - /** * 尺码42 */ @Excel(name = "尺码42") + @TableField("size_42") private Integer size42; - /** * 尺码43 */ @Excel(name = "尺码43") + @TableField("size_43") private Integer size43; /** diff --git a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductStock.java b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductStock.java index 68045e933..fbd3bface 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductStock.java +++ b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductStock.java @@ -1,10 +1,12 @@ package com.ruoyi.xkt.domain; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.XktBaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -16,6 +18,7 @@ import org.apache.commons.lang3.builder.ToStringStyle; */ @EqualsAndHashCode(callSuper = true) @Data +@Accessors(chain = true) public class StoreProductStock extends XktBaseEntity { private static final long serialVersionUID = 1L; @@ -24,104 +27,116 @@ public class StoreProductStock extends XktBaseEntity { */ @TableId private Long id; - + /** + * 档口ID + */ + private Long storeId; /** * 档口商品ID */ @Excel(name = "档口商品ID") private Long storeProdId; - + /** + * 商品货号 + */ + @Excel(name = "商品货号") + private String prodArtNum; /** * 档口商品颜色ID */ @Excel(name = "档口商品颜色ID") private Long storeProdColorId; - + /** + * 颜色名称 + */ + @Excel(name = "颜色名称") + private String colorName; /** * 尺码30 */ @Excel(name = "尺码30") + @TableField("size_30") private Integer size30; - /** * 尺码31 */ @Excel(name = "尺码31") + @TableField("size_31") private Integer size31; - /** * 尺码32 */ @Excel(name = "尺码32") + @TableField("size_32") private Integer size32; - /** * 尺码33 */ @Excel(name = "尺码33") + @TableField("size_33") private Integer size33; - /** * 尺码34 */ - @Excel(name = "尺码34") - private Integer size34; + @Excel(name = "尺码34") + @TableField("size_34") + private Integer size34; /** * 尺码35 */ @Excel(name = "尺码35") + @TableField("size_35") private Integer size35; - /** * 尺码36 */ @Excel(name = "尺码36") + @TableField("size_36") private Integer size36; - /** * 尺码37 */ @Excel(name = "尺码37") + @TableField("size_37") private Integer size37; - /** * 尺码38 */ @Excel(name = "尺码38") + @TableField("size_38") private Integer size38; - /** * 尺码39 */ @Excel(name = "尺码39") + @TableField("size_39") private Integer size39; - /** * 尺码40 */ @Excel(name = "尺码40") + @TableField("size_40") private Integer size40; - /** * 尺码41 */ @Excel(name = "尺码41") + @TableField("size_41") private Integer size41; - /** * 尺码42 */ @Excel(name = "尺码42") + @TableField("size_42") private Integer size42; - /** * 尺码43 */ @Excel(name = "尺码43") + @TableField("size_43") private Integer size43; - @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) diff --git a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreSaleDetail.java b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreSaleDetail.java index d3359d894..704f16e6f 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreSaleDetail.java +++ b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreSaleDetail.java @@ -39,10 +39,10 @@ public class StoreSaleDetail extends XktBaseEntity { @Excel(name = "档口商品ID") private Long storeProdId; /** - * 档口商品颜色尺码ID + * 档口商品颜色ID */ - @Excel(name = "档口商品颜色尺码ID") - private Long storeProdColorSizeId; + @Excel(name = "档口商品颜色ID") + private Long storeProdColorId; /** * 颜色 */ @@ -98,7 +98,7 @@ public class StoreSaleDetail extends XktBaseEntity { .append("id", getId()) .append("storeSaleId", getStoreSaleId()) .append("storeProdId", getStoreProdId()) - .append("storeProdColorSizeId", getStoreProdColorSizeId()) + .append("storeProdColorId", getStoreProdColorId()) .append("saleType", getSaleType()) .append("price", getPrice()) .append("discountedPrice", getDiscountedPrice()) diff --git a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreSaleRefundRecordDetail.java b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreSaleRefundRecordDetail.java index 5e5b65102..5e33cfaf0 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreSaleRefundRecordDetail.java +++ b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreSaleRefundRecordDetail.java @@ -43,10 +43,10 @@ public class StoreSaleRefundRecordDetail extends XktBaseEntity { private Long storeProdId; /** - * 档口商品颜色尺码ID + * 档口商品颜色ID */ - @Excel(name = "档口商品颜色尺码ID") - private Long storeProdColorSizeId; + @Excel(name = "档口商品颜色ID") + private Long storeProdColorId; /** * 颜色 */ @@ -102,7 +102,7 @@ public class StoreSaleRefundRecordDetail extends XktBaseEntity { .append("id", getId()) .append("storeSaleRefundRecordId", getStoreSaleRefundRecordId()) .append("storeProdId", getStoreProdId()) - .append("storeProdColorSizeId", getStoreProdColorSizeId()) + .append("storeProdColorId", getStoreProdColorId()) .append("saleType", getSaleType()) .append("price", getPrice()) .append("discountedPrice", getDiscountedPrice()) diff --git a/xkt/src/main/java/com/ruoyi/xkt/domain/UserShoppingCart.java b/xkt/src/main/java/com/ruoyi/xkt/domain/UserShoppingCart.java index 23ecdfb1f..d43cccc2e 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/domain/UserShoppingCart.java +++ b/xkt/src/main/java/com/ruoyi/xkt/domain/UserShoppingCart.java @@ -38,10 +38,10 @@ public class UserShoppingCart extends XktBaseEntity { private Long storeId; /** - * store_prod_color_size.id + * store_prod_color.id */ - @Excel(name = "store_prod_color_size.id") - private Long storeProdColorSizeId; + @Excel(name = "store_prod_color.id") + private Long storeProdColorId; /** * store_prod.id @@ -62,7 +62,7 @@ public class UserShoppingCart extends XktBaseEntity { .append("id", getId()) .append("userId", getUserId()) .append("storeId", getStoreId()) - .append("storeProdColorSizeId", getStoreProdColorSizeId()) + .append("storeProdColorId", getStoreProdColorId()) .append("storeProdId", getStoreProdId()) .append("quantity", getQuantity()) .append("version", getVersion()) diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockPageDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockPageDTO.java new file mode 100644 index 000000000..c95cd2cfc --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockPageDTO.java @@ -0,0 +1,26 @@ +package com.ruoyi.xkt.dto.storeProductStock; + +import com.ruoyi.xkt.dto.BasePageDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@EqualsAndHashCode(callSuper = true) +@ApiModel("档口库存分页查询入参") +@Data +public class StoreProdStockPageDTO extends BasePageDTO { + + @ApiModelProperty(name = "档口ID") + private Long storeId; + @ApiModelProperty(name = "商品货号") + private String prodArtNum; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockPageResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockPageResDTO.java new file mode 100644 index 000000000..48666eb35 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockPageResDTO.java @@ -0,0 +1,61 @@ +package com.ruoyi.xkt.dto.storeProductStock; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("档口商品库存分页返回数据") +@Data +@Accessors(chain = true) +public class StoreProdStockPageResDTO { + + @ApiModelProperty(name = "档口商品库存ID") + private Long storeProdStockId; + @ApiModelProperty(name = "档口商品ID") + private Long storeProdId; + @ApiModelProperty(name = "档口商品主图url") + private String mainPicUrl; + @ApiModelProperty(name = "商品货号") + private String prodArtNum; + @ApiModelProperty(name = "颜色名称") + private String colorName; + @ApiModelProperty(name = "分类类目") + private String prodCateName; + @ApiModelProperty(name = "尺码30") + private Integer size30; + @ApiModelProperty(name = "尺码31") + private Integer size31; + @ApiModelProperty(name = "尺码32") + private Integer size32; + @ApiModelProperty(name = "尺码33") + private Integer size33; + @ApiModelProperty(name = "尺码34") + private Integer size34; + @ApiModelProperty(name = "尺码35") + private Integer size35; + @ApiModelProperty(name = "尺码36") + private Integer size36; + @ApiModelProperty(name = "尺码37") + private Integer size37; + @ApiModelProperty(name = "尺码38") + private Integer size38; + @ApiModelProperty(name = "尺码39") + private Integer size39; + @ApiModelProperty(name = "尺码40") + private Integer size40; + @ApiModelProperty(name = "尺码41") + private Integer size41; + @ApiModelProperty(name = "尺码42") + private Integer size42; + @ApiModelProperty(name = "尺码43") + private Integer size43; + @ApiModelProperty(name = "总数量") + private Integer totalStock; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockResDTO.java new file mode 100644 index 000000000..01e3cb0a4 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockResDTO.java @@ -0,0 +1,61 @@ +package com.ruoyi.xkt.dto.storeProductStock; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("档口商品库存详情数据") +@Data +@Accessors(chain = true) +public class StoreProdStockResDTO { + + @ApiModelProperty(name = "档口商品库存ID") + private Long storeProdStockId; + @ApiModelProperty(name = "档口商品ID") + private Long storeProdId; + @ApiModelProperty(name = "档口商品主图url") + private String mainPicUrl; + @ApiModelProperty(name = "商品货号") + private String prodArtNum; + @ApiModelProperty(name = "颜色名称") + private String colorName; + @ApiModelProperty(name = "分类类目") + private String prodCateName; + @ApiModelProperty(name = "尺码30") + private Integer size30; + @ApiModelProperty(name = "尺码31") + private Integer size31; + @ApiModelProperty(name = "尺码32") + private Integer size32; + @ApiModelProperty(name = "尺码33") + private Integer size33; + @ApiModelProperty(name = "尺码34") + private Integer size34; + @ApiModelProperty(name = "尺码35") + private Integer size35; + @ApiModelProperty(name = "尺码36") + private Integer size36; + @ApiModelProperty(name = "尺码37") + private Integer size37; + @ApiModelProperty(name = "尺码38") + private Integer size38; + @ApiModelProperty(name = "尺码39") + private Integer size39; + @ApiModelProperty(name = "尺码40") + private Integer size40; + @ApiModelProperty(name = "尺码41") + private Integer size41; + @ApiModelProperty(name = "尺码42") + private Integer size42; + @ApiModelProperty(name = "尺码43") + private Integer size43; + @ApiModelProperty(name = "总数量") + private Integer totalStock; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockUpdateDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockUpdateDTO.java new file mode 100644 index 000000000..e1d1b973c --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockUpdateDTO.java @@ -0,0 +1,57 @@ +package com.ruoyi.xkt.dto.storeProductStock; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("增加档口商品库存入参") +@Data +@Accessors(chain = true) +public class StoreProdStockUpdateDTO { + + @ApiModelProperty(name = "档口商品库存ID") + private Long storeProdStockId; + @ApiModelProperty(name = "档口商品ID") + private Long storeProdId; + @ApiModelProperty(name = "商品货号") + private String prodArtNum; + @ApiModelProperty(name = "档口商品颜色ID") + private Long storeProdColorId; + @ApiModelProperty(name = "颜色名称") + private String colorName; + @ApiModelProperty(name = "尺码30") + private Integer size30; + @ApiModelProperty(name = "尺码31") + private Integer size31; + @ApiModelProperty(name = "尺码32") + private Integer size32; + @ApiModelProperty(name = "尺码33") + private Integer size33; + @ApiModelProperty(name = "尺码34") + private Integer size34; + @ApiModelProperty(name = "尺码35") + private Integer size35; + @ApiModelProperty(name = "尺码36") + private Integer size36; + @ApiModelProperty(name = "尺码37") + private Integer size37; + @ApiModelProperty(name = "尺码38") + private Integer size38; + @ApiModelProperty(name = "尺码39") + private Integer size39; + @ApiModelProperty(name = "尺码40") + private Integer size40; + @ApiModelProperty(name = "尺码41") + private Integer size41; + @ApiModelProperty(name = "尺码42") + private Integer size42; + @ApiModelProperty(name = "尺码43") + private Integer size43; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeSale/StoreSaleDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeSale/StoreSaleDTO.java index f36006f05..c3fa27f58 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/storeSale/StoreSaleDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeSale/StoreSaleDTO.java @@ -42,8 +42,8 @@ public class StoreSaleDTO { public static class SaleDetailVO { @ApiModelProperty(name = "档口商品ID") private Long storeProdId; - @ApiModelProperty(name = "档口商品颜色尺码ID") - private Long storeProdColorSizeId; + @ApiModelProperty(name = "档口商品颜色ID") + private Long storeProdColorId; @ApiModelProperty(name = "颜色") private String colorName; @ApiModelProperty(name = "尺码") diff --git a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStockMapper.java b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStockMapper.java index 96a38a7f9..6ee8527c4 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStockMapper.java +++ b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStockMapper.java @@ -2,6 +2,9 @@ package com.ruoyi.xkt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.xkt.domain.StoreProductStock; +import com.ruoyi.xkt.dto.storeProdStorage.StoreProdStoragePageResDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageResDTO; import java.util.List; @@ -59,4 +62,12 @@ public interface StoreProductStockMapper extends BaseMapper { * @return 结果 */ public int deleteStoreProductStockByStoreProdStockIds(Long[] storeProdStockIds); + + /** + * 档口商品库存分页查询 + * @param pageDTO 查询参数 + * @return 结果 + */ + List selectStockPage(StoreProdStockPageDTO pageDTO); + } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStockService.java b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStockService.java index 469dfa4a9..23bcc2700 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStockService.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStockService.java @@ -1,6 +1,11 @@ package com.ruoyi.xkt.service; +import com.ruoyi.common.core.page.Page; import com.ruoyi.xkt.domain.StoreProductStock; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageResDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockResDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockUpdateDTO; import java.util.List; @@ -14,10 +19,12 @@ public interface IStoreProductStockService { /** * 查询档口商品库存 * + * + * @param storeId 档口ID * @param storeProdStockId 档口商品库存主键 * @return 档口商品库存 */ - public StoreProductStock selectStoreProductStockByStoreProdStockId(Long storeProdStockId); + public StoreProdStockResDTO selectByStoreProdStockId(Long storeId, Long storeProdStockId); /** * 查询档口商品库存列表 @@ -58,4 +65,52 @@ public interface IStoreProductStockService { * @return 结果 */ public int deleteStoreProductStockByStoreProdStockId(Long storeProdStockId); + + /** + * 增加库存 + * @param storeId 档口ID + * @param increaseStockList 增加库存入参 + * @return int + */ + int increaseStock(Long storeId, List increaseStockList); + + /** + * 减少库存 + * @param storeId 档口ID + * @param decreaseStockList 减少库存入参 + * @return int + */ + int decreaseStock(Long storeId, List decreaseStockList); + + /** + * 清空库存 + * @param storeId 档口ID + * @param storeProdStockId 清空库存 + * @return int + */ + int clearStockToZero(Long storeId, Long storeProdStockId); + + /** + * 直接调整库存 + * @param storeId 档口ID + * @param updateStockList 调整库存入参 + * @param multiplierFactor 乘积因子 0 直接调整库存,将库存更新为页面输入的数量 1 不变数量 + * @return int + */ + int updateStock(Long storeId, List updateStockList, Integer multiplierFactor); + + /** + * 查询档口商品分页 + * @param pageDTO 分页入参 + * @return List + */ + Page selectPage(StoreProdStockPageDTO pageDTO); + + /** + * 根据档口ID和商品货号查询档口商品库存 + * @param storeId 档口ID + * @param prodArtNum 商品货号 + * @return String + */ + List selectByStoreIdAndProdArtNum(Long storeId, String prodArtNum); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductBarcodeRecordServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductBarcodeRecordServiceImpl.java index 9aca05edf..5d62d3036 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductBarcodeRecordServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductBarcodeRecordServiceImpl.java @@ -75,6 +75,7 @@ public class StoreProductBarcodeRecordServiceImpl implements IStoreProductBarcod * @return 结果 */ @Override + @Transactional public int deleteStoreProductBarcodeRecordByStoreProdBarcodeRecordIds(Long[] storeProdBarcodeRecordIds) { return storeProductBarcodeRecordMapper.deleteStoreProductBarcodeRecordByStoreProdBarcodeRecordIds(storeProdBarcodeRecordIds); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java index 29e89f74f..32b6e1a5f 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java @@ -77,6 +77,7 @@ public class StoreProductColorSizeServiceImpl implements IStoreProductColorSizeS * @return 结果 */ @Override + @Transactional public int deleteStoreProductColorSizeByStoreProdColorSizeIds(Long[] storeProdColorSizeIds) { return storeProductColorSizeMapper.deleteStoreProductColorSizeByStoreProdColorSizeIds(storeProdColorSizeIds); } @@ -88,6 +89,7 @@ public class StoreProductColorSizeServiceImpl implements IStoreProductColorSizeS * @return 结果 */ @Override + @Transactional public int deleteStoreProductColorSizeByStoreProdColorSizeId(Long storeProdColorSizeId) { return storeProductColorSizeMapper.deleteStoreProductColorSizeByStoreProdColorSizeId(storeProdColorSizeId); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductDemandDetailServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductDemandDetailServiceImpl.java index df6fed994..f52643882 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductDemandDetailServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductDemandDetailServiceImpl.java @@ -77,6 +77,7 @@ public class StoreProductDemandDetailServiceImpl implements IStoreProductDemandD * @return 结果 */ @Override + @Transactional public int deleteStoreProductDemandDetailByStoreProdDemaDetailIds(Long[] storeProdDemaDetailIds) { return storeProductDemandDetailMapper.deleteStoreProductDemandDetailByStoreProdDemaDetailIds(storeProdDemaDetailIds); } @@ -88,6 +89,7 @@ public class StoreProductDemandDetailServiceImpl implements IStoreProductDemandD * @return 结果 */ @Override + @Transactional public int deleteStoreProductDemandDetailByStoreProdDemaDetailId(Long storeProdDemaDetailId) { return storeProductDemandDetailMapper.deleteStoreProductDemandDetailByStoreProdDemaDetailId(storeProdDemaDetailId); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStockServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStockServiceImpl.java index 63aa3f07b..bd51224ce 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStockServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStockServiceImpl.java @@ -1,14 +1,35 @@ package com.ruoyi.xkt.service.impl; +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.ruoyi.common.constant.HttpStatus; +import com.ruoyi.common.core.page.Page; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.xkt.domain.StoreProductFile; import com.ruoyi.xkt.domain.StoreProductStock; +import com.ruoyi.xkt.domain.SysFile; +import com.ruoyi.xkt.dto.storeProductFile.StoreProdMainPicDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageResDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockResDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockUpdateDTO; +import com.ruoyi.xkt.mapper.StoreProductFileMapper; import com.ruoyi.xkt.mapper.StoreProductStockMapper; +import com.ruoyi.xkt.mapper.SysFileMapper; import com.ruoyi.xkt.service.IStoreProductStockService; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.ibatis.executor.BatchResult; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * 档口商品库存Service业务层处理 @@ -17,20 +38,218 @@ import java.util.List; * @date 2025-03-26 */ @Service +@RequiredArgsConstructor public class StoreProductStockServiceImpl implements IStoreProductStockService { - @Autowired - private StoreProductStockMapper storeProductStockMapper; + + final StoreProductStockMapper storeProdStockMapper; + final StoreProductFileMapper storeProdFileMapper; + final SysFileMapper fileMapper; + + @Override + @Transactional(readOnly = true) + public Page selectPage(StoreProdStockPageDTO pageDTO) { + PageHelper.startPage(pageDTO.getPageNum(), pageDTO.getPageSize()); + List stockList = this.storeProdStockMapper.selectStockPage(pageDTO); + if (CollectionUtils.isEmpty(stockList)) { + return Page.empty(pageDTO.getPageSize(), pageDTO.getPageNum()); + } + // 提取查询结果中的商店产品ID列表 + List storeProdIdList = stockList.stream().map(StoreProdStockPageResDTO::getStoreProdId).collect(Collectors.toList()); + // 查找排名第一个商品主图列表 + List mainPicList = this.storeProdFileMapper.selectMainPicByStoreProdIdList(storeProdIdList, "MAIN_PIC", 1); + Map mainPicMap = CollectionUtils.isEmpty(mainPicList) ? new HashMap<>() : mainPicList.stream() + .collect(Collectors.toMap(StoreProdMainPicDTO::getStoreProdId, StoreProdMainPicDTO::getFileUrl)); + // 为每个产品设置主图URL和标准尺码列表 + stockList.forEach(x -> x.setMainPicUrl(mainPicMap.get(x.getStoreProdId()))); + return Page.convert(new PageInfo<>(stockList)); + } + + /** + * 根据档口ID和商品货号查询档口商品库存 + * + * @param storeId 档口ID + * @param prodArtNum 商品货号 + * @return String + */ + @Override + @Transactional(readOnly = true) + public List selectByStoreIdAndProdArtNum(Long storeId, String prodArtNum) { + List stockList = this.storeProdStockMapper.selectList(new LambdaQueryWrapper() + .eq(StoreProductStock::getStoreId, storeId).eq(StoreProductStock::getProdArtNum, prodArtNum) + .eq(StoreProductStock::getDelFlag, "0")); + return CollectionUtils.isEmpty(stockList) ? new ArrayList<>() + : stockList.stream().map(x -> BeanUtil.toBean(x, StoreProdStockResDTO.class).setStoreProdStockId(x.getId())).collect(Collectors.toList()); + } + + + /** + * 增加库存 + * + * @param increaseStockList 增加库存入参 + * @return int + */ + @Override + @Transactional + public int increaseStock(Long storeId, List increaseStockList) { + // 根据关键信息找到已存在的库存 + List existStockList = this.storeProdStockMapper.selectList(new LambdaQueryWrapper() + .eq(StoreProductStock::getStoreId, storeId).eq(StoreProductStock::getDelFlag, "0") + .in(StoreProductStock::getStoreProdId, increaseStockList.stream().map(StoreProdStockUpdateDTO::getStoreProdId).collect(Collectors.toList())) + .in(StoreProductStock::getStoreProdColorId, increaseStockList.stream().map(StoreProdStockUpdateDTO::getStoreProdColorId).collect(Collectors.toList()))); + // 已存在的档口商品颜色库存map + Map existStockMap = existStockList.stream().collect(Collectors.toMap(StoreProductStock::getStoreProdColorId, Function.identity())); + // 总的待更新的库存列表 + List stockList = increaseStockList.stream().map(increseStock -> { + StoreProductStock stock = existStockMap.containsKey(increseStock.getStoreProdColorId()) + ? this.adjustStock(existStockMap.get(increseStock.getStoreProdColorId()), increseStock, Boolean.TRUE) + : BeanUtil.toBean(increseStock, StoreProductStock.class); + return stock.setStoreId(storeId); + }).collect(Collectors.toList()); + List list = this.storeProdStockMapper.insertOrUpdate(stockList); + return list.size(); + } + + /** + * 减少库存 + * + * @param storeId 档口ID + * @param decreaseStockList 减少库存入参 + * @return int + */ + @Override + @Transactional + public int decreaseStock(Long storeId, List decreaseStockList) { + // 根据关键信息找到已存在的库存 + List existStockList = this.storeProdStockMapper.selectList(new LambdaQueryWrapper() + .eq(StoreProductStock::getStoreId, storeId).eq(StoreProductStock::getDelFlag, "0") + .in(StoreProductStock::getStoreProdId, decreaseStockList.stream().map(StoreProdStockUpdateDTO::getStoreProdId).collect(Collectors.toList())) + .in(StoreProductStock::getStoreProdColorId, decreaseStockList.stream().map(StoreProdStockUpdateDTO::getStoreProdColorId).collect(Collectors.toList()))); + // 待扣减的库存map + Map decreaseStockMap = decreaseStockList.stream().collect(Collectors.toMap(StoreProdStockUpdateDTO::getStoreProdColorId, Function.identity())); + existStockList.forEach(stock -> this.adjustStock(stock, decreaseStockMap.get(stock.getStoreProdColorId()), Boolean.FALSE)); + List list = this.storeProdStockMapper.updateById(existStockList); + return list.size(); + } + + /** + * 清空库存 + * + * @param storeId + * @param storeProdStockId 清空库存 + * @return int + */ + @Override + @Transactional + public int clearStockToZero(Long storeId, Long storeProdStockId) { + StoreProductStock stock = Optional.ofNullable(this.storeProdStockMapper.selectOne(new LambdaQueryWrapper() + .eq(StoreProductStock::getId, storeProdStockId).eq(StoreProductStock::getStoreId, storeId).eq(StoreProductStock::getDelFlag, "0"))) + .orElseThrow(() -> new ServiceException("档口商品库存不存在!", HttpStatus.ERROR)); + stock.setSize30(0).setSize31(0).setSize32(0).setSize33(0).setSize34(0).setSize35(0).setSize36(0).setSize37(0) + .setSize38(0).setSize39(0).setSize40(0).setSize41(0).setSize42(0).setSize43(0); + return this.storeProdStockMapper.updateById(stock); + } + + + /** + * 调整库存 + * + * @param storeId 档口ID + * @param updateStockList 库存更新diff list 要包含正负数 + * @param multiplierFactor 乘积因子 0 直接调整库存,将库存更新为页面输入的数量 1 不变数量 + * @return int + */ + @Override + @Transactional + public int updateStock(Long storeId, List updateStockList, Integer multiplierFactor) { + List stockList = Optional.ofNullable(this.storeProdStockMapper.selectList(new LambdaQueryWrapper() + .in(StoreProductStock::getStoreProdId, updateStockList.stream().map(StoreProdStockUpdateDTO::getStoreProdId).collect(Collectors.toList())) + .eq(StoreProductStock::getStoreId, storeId) + .eq(StoreProductStock::getDelFlag, "0"))) + .orElseThrow(() -> new ServiceException("档口商品库存不存在!", HttpStatus.ERROR)); + // 数据库数据map + Map diffStockMap = updateStockList.stream().collect(Collectors + .toMap(stock -> stock.getProdArtNum() + stock.getStoreProdId() + stock.getStoreProdColorId(), Function.identity())); + List updateList = new ArrayList<>(); + stockList.forEach(stock -> { + StoreProdStockUpdateDTO updateStock = diffStockMap.get(stock.getProdArtNum() + stock.getStoreProdId() + stock.getStoreProdColorId()); + if (ObjectUtils.isEmpty(updateStock)) { + return; + } + if (ObjectUtils.isNotEmpty(updateStock.getSize30())) { + stock.setSize30(ObjectUtils.defaultIfNull(stock.getSize30(), 0) * multiplierFactor + updateStock.getSize30()); + } + if (ObjectUtils.isNotEmpty(updateStock.getSize31())) { + stock.setSize31(ObjectUtils.defaultIfNull(stock.getSize31(), 0) * multiplierFactor + updateStock.getSize31()); + } + if (ObjectUtils.isNotEmpty(updateStock.getSize32())) { + stock.setSize32(ObjectUtils.defaultIfNull(stock.getSize32(), 0) * multiplierFactor + updateStock.getSize32()); + } + if (ObjectUtils.isNotEmpty(updateStock.getSize33())) { + stock.setSize33(ObjectUtils.defaultIfNull(stock.getSize33(), 0) * multiplierFactor + updateStock.getSize33()); + } + if (ObjectUtils.isNotEmpty(updateStock.getSize34())) { + stock.setSize34(ObjectUtils.defaultIfNull(stock.getSize34(), 0) * multiplierFactor + updateStock.getSize34()); + } + if (ObjectUtils.isNotEmpty(updateStock.getSize35())) { + stock.setSize35(ObjectUtils.defaultIfNull(stock.getSize35(), 0) * multiplierFactor + updateStock.getSize35()); + } + if (ObjectUtils.isNotEmpty(updateStock.getSize36())) { + stock.setSize36(ObjectUtils.defaultIfNull(stock.getSize36(), 0) * multiplierFactor + updateStock.getSize36()); + } + if (ObjectUtils.isNotEmpty(updateStock.getSize37())) { + stock.setSize37(ObjectUtils.defaultIfNull(stock.getSize37(), 0) * multiplierFactor + updateStock.getSize37()); + } + if (ObjectUtils.isNotEmpty(updateStock.getSize38())) { + stock.setSize38(ObjectUtils.defaultIfNull(stock.getSize38(), 0) * multiplierFactor + updateStock.getSize38()); + } + if (ObjectUtils.isNotEmpty(updateStock.getSize39())) { + stock.setSize39(ObjectUtils.defaultIfNull(stock.getSize39(), 0) * multiplierFactor + updateStock.getSize39()); + } + if (ObjectUtils.isNotEmpty(updateStock.getSize40())) { + stock.setSize40(ObjectUtils.defaultIfNull(stock.getSize40(), 0) * multiplierFactor + updateStock.getSize40()); + } + if (ObjectUtils.isNotEmpty(updateStock.getSize41())) { + stock.setSize41(ObjectUtils.defaultIfNull(stock.getSize41(), 0) * multiplierFactor + updateStock.getSize41()); + } + if (ObjectUtils.isNotEmpty(updateStock.getSize42())) { + stock.setSize42(ObjectUtils.defaultIfNull(stock.getSize42(), 0) * multiplierFactor + updateStock.getSize42()); + } + if (ObjectUtils.isNotEmpty(updateStock.getSize43())) { + stock.setSize43(ObjectUtils.defaultIfNull(stock.getSize43(), 0) * multiplierFactor + updateStock.getSize43()); + } + updateList.add(stock); + }); + List list = this.storeProdStockMapper.updateById(updateList); + return list.size(); + } + /** * 查询档口商品库存 * + * @param storeId 档口ID * @param storeProdStockId 档口商品库存主键 * @return 档口商品库存 */ @Override @Transactional(readOnly = true) - public StoreProductStock selectStoreProductStockByStoreProdStockId(Long storeProdStockId) { - return storeProductStockMapper.selectStoreProductStockByStoreProdStockId(storeProdStockId); + public StoreProdStockResDTO selectByStoreProdStockId(Long storeId, Long storeProdStockId) { + StoreProductStock stock = Optional.ofNullable(this.storeProdStockMapper.selectOne(new LambdaQueryWrapper() + .eq(StoreProductStock::getId, storeProdStockId).eq(StoreProductStock::getStoreId, storeId) + .eq(StoreProductStock::getDelFlag, "0"))) + .orElseThrow(() -> new ServiceException("档口商品库存不存在!", HttpStatus.ERROR)); + // 档口商品第一张主图 + StoreProductFile mainPic = Optional.ofNullable(this.storeProdFileMapper.selectOne(new LambdaQueryWrapper() + .eq(StoreProductFile::getStoreProdId, stock.getStoreProdId()).eq(StoreProductFile::getStoreId, storeId) + .eq(StoreProductFile::getDelFlag, "0").eq(StoreProductFile::getFileType, "MAIN_PIC") + .eq(StoreProductFile::getOrderNum, 1))) + .orElseThrow(() -> new ServiceException("商品主图不存在!", HttpStatus.ERROR)); + // 图片 + SysFile file = Optional.ofNullable(this.fileMapper.selectOne(new LambdaQueryWrapper() + .eq(SysFile::getId, mainPic.getFileId()).eq(SysFile::getDelFlag, "0"))) + .orElseThrow(() -> new ServiceException("商品主图不存在!", HttpStatus.ERROR)); + return BeanUtil.toBean(stock, StoreProdStockResDTO.class) + .setStoreProdStockId(stock.getId()).setMainPicUrl(file.getFileUrl()); } /** @@ -42,7 +261,7 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService { @Override @Transactional(readOnly = true) public List selectStoreProductStockList(StoreProductStock storeProductStock) { - return storeProductStockMapper.selectStoreProductStockList(storeProductStock); + return storeProdStockMapper.selectStoreProductStockList(storeProductStock); } /** @@ -55,7 +274,7 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService { @Transactional public int insertStoreProductStock(StoreProductStock storeProductStock) { storeProductStock.setCreateTime(DateUtils.getNowDate()); - return storeProductStockMapper.insertStoreProductStock(storeProductStock); + return storeProdStockMapper.insertStoreProductStock(storeProductStock); } /** @@ -68,7 +287,7 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService { @Transactional public int updateStoreProductStock(StoreProductStock storeProductStock) { storeProductStock.setUpdateTime(DateUtils.getNowDate()); - return storeProductStockMapper.updateStoreProductStock(storeProductStock); + return storeProdStockMapper.updateStoreProductStock(storeProductStock); } /** @@ -78,8 +297,9 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService { * @return 结果 */ @Override + @Transactional public int deleteStoreProductStockByStoreProdStockIds(Long[] storeProdStockIds) { - return storeProductStockMapper.deleteStoreProductStockByStoreProdStockIds(storeProdStockIds); + return storeProdStockMapper.deleteStoreProductStockByStoreProdStockIds(storeProdStockIds); } /** @@ -89,7 +309,69 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService { * @return 结果 */ @Override + @Transactional public int deleteStoreProductStockByStoreProdStockId(Long storeProdStockId) { - return storeProductStockMapper.deleteStoreProductStockByStoreProdStockId(storeProdStockId); + return storeProdStockMapper.deleteStoreProductStockByStoreProdStockId(storeProdStockId); } + + + /** + * 通过数量diff增减或扣减库存 + * @param stock 数据库库存表 + * @param adjustDTO diff数据 + * @param isInCrease true 增加库存 false 减少库存 + * @return StoreProductStock + */ + private StoreProductStock adjustStock(StoreProductStock stock, StoreProdStockUpdateDTO adjustDTO, Boolean isInCrease) { + if (ObjectUtils.isEmpty(adjustDTO)) { + return stock; + } + // 如果isInCrease为true,则为1,反之则为-1 + int adjustSign = isInCrease ? 1 : -1; + if (ObjectUtils.isNotEmpty(adjustDTO.getSize30())) { + stock.setSize30(adjustDTO.getSize30() * adjustSign + ObjectUtils.defaultIfNull(stock.getSize30(), 0)); + } + if (ObjectUtils.isNotEmpty(adjustDTO.getSize31())) { + stock.setSize31(adjustDTO.getSize31() * adjustSign + ObjectUtils.defaultIfNull(stock.getSize31(), 0)); + } + if (ObjectUtils.isNotEmpty(adjustDTO.getSize32())) { + stock.setSize32(adjustDTO.getSize32() * adjustSign + ObjectUtils.defaultIfNull(stock.getSize32(), 0)); + } + if (ObjectUtils.isNotEmpty(adjustDTO.getSize33())) { + stock.setSize33(adjustDTO.getSize33() * adjustSign + ObjectUtils.defaultIfNull(stock.getSize33(), 0)); + } + if (ObjectUtils.isNotEmpty(adjustDTO.getSize34())) { + stock.setSize34(adjustDTO.getSize34() * adjustSign + ObjectUtils.defaultIfNull(stock.getSize34(), 0)); + } + if (ObjectUtils.isNotEmpty(adjustDTO.getSize35())) { + stock.setSize35(adjustDTO.getSize35() * adjustSign + ObjectUtils.defaultIfNull(stock.getSize35(), 0)); + } + if (ObjectUtils.isNotEmpty(adjustDTO.getSize36())) { + stock.setSize36(adjustDTO.getSize36() * adjustSign + ObjectUtils.defaultIfNull(stock.getSize36(), 0)); + } + if (ObjectUtils.isNotEmpty(adjustDTO.getSize37())) { + stock.setSize37(adjustDTO.getSize37() * adjustSign + ObjectUtils.defaultIfNull(stock.getSize37(), 0)); + } + if (ObjectUtils.isNotEmpty(adjustDTO.getSize38())) { + stock.setSize38(adjustDTO.getSize38() * adjustSign + ObjectUtils.defaultIfNull(stock.getSize38(), 0)); + } + if (ObjectUtils.isNotEmpty(adjustDTO.getSize39())) { + stock.setSize39(adjustDTO.getSize39() * adjustSign + ObjectUtils.defaultIfNull(stock.getSize39(), 0)); + } + if (ObjectUtils.isNotEmpty(adjustDTO.getSize40())) { + stock.setSize40(adjustDTO.getSize40() * adjustSign + ObjectUtils.defaultIfNull(stock.getSize40(), 0)); + } + if (ObjectUtils.isNotEmpty(adjustDTO.getSize41())) { + stock.setSize41(adjustDTO.getSize41() * adjustSign + ObjectUtils.defaultIfNull(stock.getSize41(), 0)); + } + if (ObjectUtils.isNotEmpty(adjustDTO.getSize42())) { + stock.setSize42(adjustDTO.getSize42() * adjustSign + ObjectUtils.defaultIfNull(stock.getSize42(), 0)); + } + if (ObjectUtils.isNotEmpty(adjustDTO.getSize43())) { + stock.setSize43(adjustDTO.getSize43() * adjustSign + ObjectUtils.defaultIfNull(stock.getSize43(), 0)); + } + return stock; + } + + } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageDemandDeducteServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageDemandDeducteServiceImpl.java index b83811e88..6da49cdeb 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageDemandDeducteServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageDemandDeducteServiceImpl.java @@ -78,6 +78,7 @@ public class StoreProductStorageDemandDeducteServiceImpl implements IStoreProduc * @return 结果 */ @Override + @Transactional public int deleteStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteIds(Long[] storeProdStorDemaDeducteIds) { return storeProductStorageDemandDeducteMapper.deleteStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteIds(storeProdStorDemaDeducteIds); } @@ -89,6 +90,7 @@ public class StoreProductStorageDemandDeducteServiceImpl implements IStoreProduc * @return 结果 */ @Override + @Transactional public int deleteStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(Long storeProdStorDemaDeducteId) { return storeProductStorageDemandDeducteMapper.deleteStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(storeProdStorDemaDeducteId); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageDetailServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageDetailServiceImpl.java index 5778e0ff9..e08b9d94f 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageDetailServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageDetailServiceImpl.java @@ -78,6 +78,7 @@ public class StoreProductStorageDetailServiceImpl implements IStoreProductStorag * @return 结果 */ @Override + @Transactional public int deleteStoreProductStorageDetailByStoreProdStorDetailIds(Long[] storeProdStorDetailIds) { return storeProductStorageDetailMapper.deleteStoreProductStorageDetailByStoreProdStorDetailIds(storeProdStorDetailIds); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageServiceImpl.java index 0f795ff87..8f3efa165 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageServiceImpl.java @@ -16,15 +16,14 @@ import com.ruoyi.xkt.dto.storeProdStorage.StoreProdStorageDTO; import com.ruoyi.xkt.dto.storeProdStorage.StoreProdStoragePageDTO; import com.ruoyi.xkt.dto.storeProdStorage.StoreProdStoragePageResDTO; import com.ruoyi.xkt.dto.storeProdStorage.StoreProdStorageResDTO; -import com.ruoyi.xkt.dto.storeSale.StoreSalePageResDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockUpdateDTO; import com.ruoyi.xkt.mapper.StoreProductStorageDetailMapper; import com.ruoyi.xkt.mapper.StoreProductStorageMapper; +import com.ruoyi.xkt.service.IStoreProductStockService; import com.ruoyi.xkt.service.IStoreProductStorageService; import com.ruoyi.xkt.service.IVoucherSequenceService; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.ObjectUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -46,6 +45,7 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi final StoreProductStorageMapper storageMapper; final StoreProductStorageDetailMapper storageDetailMapper; final IVoucherSequenceService sequenceService; + final IStoreProductStockService stockService; /** @@ -87,6 +87,10 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi List detailList = storeProdStorageDTO.getDetailList().stream().map(x -> BeanUtil.toBean(x, StoreProductStorageDetail.class) .setStoreProdStorId(storeProdStorage.getId())).collect(Collectors.toList()); this.storageDetailMapper.insert(detailList); + // 构造增加库存的入参DTO + List increaseStockList = BeanUtil.copyToList(detailList, StoreProdStockUpdateDTO.class); + // 增加档口商品的库存 + this.stockService.increaseStock(storeProdStorageDTO.getStoreId(), increaseStockList); return count; } @@ -144,12 +148,9 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi .eq(StoreProductStorageDetail::getStoreProdStorId, storeProdStorId).eq(StoreProductStorageDetail::getDelFlag, "0")); storageDetailList.forEach(x -> x.setDelFlag("2")); this.storageDetailMapper.updateById(storageDetailList); - - // TODO 更新档口商品库存 - // TODO 更新档口商品库存 - // TODO 更新档口商品库存 - // TODO 更新档口商品库存 - + // 减少档口商品库存 + this.stockService.decreaseStock(storage.getStoreId(), storageDetailList.stream() + .map(x -> BeanUtil.toBean(x, StoreProdStockUpdateDTO.class)).collect(Collectors.toList())); return count; } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreRoleAccountServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreRoleAccountServiceImpl.java index 9e227ae55..1cddc3fe0 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreRoleAccountServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreRoleAccountServiceImpl.java @@ -76,6 +76,7 @@ public class StoreRoleAccountServiceImpl implements IStoreRoleAccountService { * @return 结果 */ @Override + @Transactional public int deleteStoreRoleAccountByStoreRoleAccIds(Long[] storeRoleAccIds) { return storeRoleAccountMapper.deleteStoreRoleAccountByStoreRoleAccIds(storeRoleAccIds); } @@ -87,6 +88,7 @@ public class StoreRoleAccountServiceImpl implements IStoreRoleAccountService { * @return 结果 */ @Override + @Transactional public int deleteStoreRoleAccountByStoreRoleAccId(Long storeRoleAccId) { return storeRoleAccountMapper.deleteStoreRoleAccountByStoreRoleAccId(storeRoleAccId); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreRoleMenuServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreRoleMenuServiceImpl.java index 8d44bed95..3b6679a48 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreRoleMenuServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreRoleMenuServiceImpl.java @@ -76,6 +76,7 @@ public class StoreRoleMenuServiceImpl implements IStoreRoleMenuService { * @return 结果 */ @Override + @Transactional public int deleteStoreRoleMenuByStoreRoleMenuIds(Long[] storeRoleMenuIds) { return storeRoleMenuMapper.deleteStoreRoleMenuByStoreRoleMenuIds(storeRoleMenuIds); } @@ -87,6 +88,7 @@ public class StoreRoleMenuServiceImpl implements IStoreRoleMenuService { * @return 结果 */ @Override + @Transactional public int deleteStoreRoleMenuByStoreRoleMenuId(Long storeRoleMenuId) { return storeRoleMenuMapper.deleteStoreRoleMenuByStoreRoleMenuId(storeRoleMenuId); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreRoleServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreRoleServiceImpl.java index bc36deec1..a35ef929c 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreRoleServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreRoleServiceImpl.java @@ -76,6 +76,7 @@ public class StoreRoleServiceImpl implements IStoreRoleService { * @return 结果 */ @Override + @Transactional public int deleteStoreRoleByStoreRoleIds(Long[] storeRoleIds) { return storeRoleMapper.deleteStoreRoleByStoreRoleIds(storeRoleIds); } @@ -87,6 +88,7 @@ public class StoreRoleServiceImpl implements IStoreRoleService { * @return 结果 */ @Override + @Transactional public int deleteStoreRoleByStoreRoleId(Long storeRoleId) { return storeRoleMapper.deleteStoreRoleByStoreRoleId(storeRoleId); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleDetailServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleDetailServiceImpl.java index fca8bde42..243a7ea3b 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleDetailServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleDetailServiceImpl.java @@ -76,6 +76,7 @@ public class StoreSaleDetailServiceImpl implements IStoreSaleDetailService { * @return 结果 */ @Override + @Transactional public int deleteStoreSaleDetailByStoreSaleDetailIds(Long[] storeSaleDetailIds) { return storeSaleDetailMapper.deleteStoreSaleDetailByStoreSaleDetailIds(storeSaleDetailIds); } @@ -87,6 +88,7 @@ public class StoreSaleDetailServiceImpl implements IStoreSaleDetailService { * @return 结果 */ @Override + @Transactional public int deleteStoreSaleDetailByStoreSaleDetailId(Long storeSaleDetailId) { return storeSaleDetailMapper.deleteStoreSaleDetailByStoreSaleDetailId(storeSaleDetailId); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleRefundRecordServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleRefundRecordServiceImpl.java index b5ecc3d44..08838e35b 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleRefundRecordServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleRefundRecordServiceImpl.java @@ -76,6 +76,7 @@ public class StoreSaleRefundRecordServiceImpl implements IStoreSaleRefundRecordS * @return 结果 */ @Override + @Transactional public int deleteStoreSaleRefundRecordByStoreSaleRefundRecordIds(Long[] storeSaleRefundRecordIds) { return storeSaleRefundRecordMapper.deleteStoreSaleRefundRecordByStoreSaleRefundRecordIds(storeSaleRefundRecordIds); } @@ -87,6 +88,7 @@ public class StoreSaleRefundRecordServiceImpl implements IStoreSaleRefundRecordS * @return 结果 */ @Override + @Transactional public int deleteStoreSaleRefundRecordByStoreSaleRefundRecordId(Long storeSaleRefundRecordId) { return storeSaleRefundRecordMapper.deleteStoreSaleRefundRecordByStoreSaleRefundRecordId(storeSaleRefundRecordId); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleServiceImpl.java index 73ebc10ac..4d1c37d6d 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleServiceImpl.java @@ -10,18 +10,21 @@ import com.ruoyi.common.core.page.Page; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.common.utils.bigDecimal.CollectorsUtil; import com.ruoyi.xkt.domain.*; import com.ruoyi.xkt.dto.storeCustomer.StoreCusGeneralSaleDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockUpdateDTO; import com.ruoyi.xkt.dto.storeSale.StoreSaleDTO; import com.ruoyi.xkt.dto.storeSale.StoreSalePageDTO; import com.ruoyi.xkt.dto.storeSale.StoreSalePageResDTO; import com.ruoyi.xkt.dto.storeSale.StoreSalePayStatusDTO; import com.ruoyi.xkt.mapper.*; +import com.ruoyi.xkt.service.IStoreProductStockService; import com.ruoyi.xkt.service.IStoreSaleService; import com.ruoyi.xkt.service.IVoucherSequenceService; import lombok.RequiredArgsConstructor; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.ListUtils; +import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -29,10 +32,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.time.LocalDate; import java.time.ZoneId; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; /** @@ -51,6 +51,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService { final StoreSaleDetailMapper storeSaleDetailMapper; final StoreSaleRefundRecordMapper refundRecordMapper; final StoreSaleRefundRecordDetailMapper refundRecordDetailMapper; + final IStoreProductStockService storeProdStockService; /** * 获取当前档口客户的销售业绩 @@ -152,20 +153,18 @@ public class StoreSaleServiceImpl implements IStoreSaleService { List saleDetailList = storeSaleDTO.getDetailList().stream().map(x -> BeanUtil.toBean(x, StoreSaleDetail.class) .setSaleType(storeSaleDTO.getSaleType()).setStoreSaleId(storeSale.getId())).collect(Collectors.toList()); this.storeSaleDetailMapper.insert(saleDetailList); - - - // TODO 扣件库存 - // TODO 扣件库存 - // TODO 扣件库存 - // TODO 扣件库存 - // TODO 扣件库存 - // TODO 扣件库存 - - - + // 先汇总当前这笔订单商品明细的销售数量,包括销售及退货 key: prodArtNum + storeProdId + storeProdColorId + colorName, value: map(key:size,value:count) + Map> saleCountMap = storeSaleDTO.getDetailList().stream().collect(Collectors + .groupingBy(x -> x.getProdArtNum() + ":" + x.getStoreProdId() + ":" + x.getStoreProdColorId() + ":" + x.getColorName(), Collectors + .groupingBy(StoreSaleDTO.SaleDetailVO::getSize, Collectors + .mapping(StoreSaleDTO.SaleDetailVO::getQuantity, Collectors.reducing(0, Integer::sum))))); + // 组装库存调整入参调整库存 + this.storeProdStockService.updateStock(storeSale.getStoreId(), this.getStockDiffList(saleCountMap, -1), 1); return count; } + + /** * 修改档口销售出库 * @@ -204,27 +203,21 @@ public class StoreSaleServiceImpl implements IStoreSaleService { .setOperatorId(loginUser.getUserId()).setOperatorName(loginUser.getUsername())); // 先将所有明细置为无效,再新增 this.storeSaleDetailMapper.updateById(saleDetailList.stream().peek(x -> x.setDelFlag("2")).collect(Collectors.toList())); - - // TODO 扣件库存 - // TODO 扣件库存 - // TODO 扣件库存 - // TODO 扣件库存 - // TODO 扣件库存 - // TODO 扣件库存 - - - // TODO 增加库存 - // TODO 增加库存 - // TODO 增加库存 - // TODO 增加库存 - // TODO 增加库存 - // TODO 增加库存 - - // 再新增档口销售出库明细数据 List detailList = storeSaleDTO.getDetailList().stream().map(x -> BeanUtil.toBean(x, StoreSaleDetail.class) .setSaleType(storeSaleDTO.getSaleType()).setStoreSaleId(storeSale.getId())).collect(Collectors.toList()); this.storeSaleDetailMapper.insert(detailList); + // 汇总编辑的存货总数量 + final List totalList = new ArrayList(saleDetailList){{ + addAll(detailList); + }}; + // 先汇总当前这笔订单商品明细的销售数量,包括销售及退货 key: prodArtNum + storeProdId + storeProdColorId + colorName, value: map(key:size,value:count) + Map> saleCountMap = totalList.stream().collect(Collectors + .groupingBy(x -> x.getProdArtNum() + ":" + x.getStoreProdId() + ":" + x.getStoreProdColorId() + ":" + x.getColorName(), Collectors + .groupingBy(StoreSaleDetail::getSize, Collectors + .mapping(StoreSaleDetail::getQuantity, Collectors.reducing(0, Integer::sum))))); + // 调整库存 + this.storeProdStockService.updateStock(storeSale.getStoreId(), this.getStockDiffList(saleCountMap, 1), 1); return count; } @@ -255,16 +248,8 @@ public class StoreSaleServiceImpl implements IStoreSaleService { * @return 结果 */ @Override + @Transactional public int deleteStoreSaleByStoreSaleId(Long storeSaleId) { - - // TODO 增加库存 - // TODO 增加库存 - // TODO 增加库存 - // TODO 增加库存 - // TODO 增加库存 - - // TODO 客户销售金额扣减、商品销售金额扣减 - // 删除档口销售出库数据 StoreSale storeSale = Optional.ofNullable(this.storeSaleMapper.selectOne(new LambdaQueryWrapper() .eq(StoreSale::getId, storeSaleId).eq(StoreSale::getDelFlag, "0"))) @@ -275,6 +260,13 @@ public class StoreSaleServiceImpl implements IStoreSaleService { List saleDetailList = this.storeSaleDetailMapper.selectList(new LambdaQueryWrapper() .eq(StoreSaleDetail::getStoreSaleId, storeSaleId).eq(StoreSaleDetail::getDelFlag, "0")); this.storeSaleDetailMapper.updateById(saleDetailList.stream().peek(x -> x.setDelFlag("2")).collect(Collectors.toList())); + // 先汇总当前这笔订单商品明细的销售数量,包括销售及退货 key: prodArtNum + storeProdId + storeProdColorId + colorName, value: map(key:size,value:count) + Map> saleCountMap = saleDetailList.stream().collect(Collectors + .groupingBy(x -> x.getProdArtNum() + ":" + x.getStoreProdId() + ":" + x.getStoreProdColorId() + ":" + x.getColorName(), Collectors + .groupingBy(StoreSaleDetail::getSize, Collectors + .mapping(StoreSaleDetail::getQuantity, Collectors.reducing(0, Integer::sum))))); + // 组装库存调整库存 + this.storeProdStockService.updateStock(storeSale.getStoreId(), this.getStockDiffList(saleCountMap, 1), 1); return count; } @@ -286,6 +278,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService { * @return 结果 */ @Override + @Transactional public int deleteStoreSaleByStoreSaleIds(Long[] storeSaleIds) { return storeSaleMapper.deleteStoreSaleByStoreSaleIds(storeSaleIds); } @@ -302,6 +295,76 @@ public class StoreSaleServiceImpl implements IStoreSaleService { return null; } - + /** + * 获取库存变更列表 + * @param saleCountMap 销售出库的map数量 + * @param multiplierFactor 1 返回当前库存 -1 减少库存 + * @return List + */ + private List getStockDiffList(Map> saleCountMap, int multiplierFactor) { + return MapUtils.isEmpty(saleCountMap) ? new ArrayList<>() : saleCountMap.entrySet().stream() + .map(entry -> { + String[] keys = entry.getKey().split(":"); + String prodArtNum = keys[0]; + Long storeProdId = Long.parseLong(keys[1]); + Long storeProdColorId = Long.parseLong(keys[2]); + String colorName = keys[3]; + StoreProdStockUpdateDTO dto = new StoreProdStockUpdateDTO().setProdArtNum(prodArtNum) + .setStoreProdId(storeProdId).setStoreProdColorId(storeProdColorId).setColorName(colorName); + entry.getValue().forEach((size, diffQuantity) -> { + // 库存变更数量乘以正负1 + diffQuantity = diffQuantity * multiplierFactor; + switch (size) { + case 30: + dto.setSize30(diffQuantity); + break; + case 31: + dto.setSize31(diffQuantity); + break; + case 32: + dto.setSize32(diffQuantity); + break; + case 33: + dto.setSize33(diffQuantity); + break; + case 34: + dto.setSize34(diffQuantity); + break; + case 35: + dto.setSize35(diffQuantity); + break; + case 36: + dto.setSize36(diffQuantity); + break; + case 37: + dto.setSize37(diffQuantity); + break; + case 38: + dto.setSize38(diffQuantity); + break; + case 39: + dto.setSize39(diffQuantity); + break; + case 40: + dto.setSize40(diffQuantity); + break; + case 41: + dto.setSize41(diffQuantity); + break; + case 42: + dto.setSize42(diffQuantity); + break; + case 43: + dto.setSize43(diffQuantity); + break; + default: + // 处理不在预期范围内的尺码 + throw new IllegalArgumentException("Unexpected size: " + size); + } + }); + return dto; + }) + .collect(Collectors.toList()); + } } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java index 1f7e6b2b4..19d1f629c 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java @@ -76,6 +76,7 @@ public class StoreServiceImpl implements IStoreService { * @return 结果 */ @Override + @Transactional public int deleteStoreByStoreIds(Long[] storeIds) { return storeMapper.deleteStoreByStoreIds(storeIds); } @@ -87,6 +88,7 @@ public class StoreServiceImpl implements IStoreService { * @return 结果 */ @Override + @Transactional public int deleteStoreByStoreId(Long storeId) { return storeMapper.deleteStoreByStoreId(storeId); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/SysFileServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/SysFileServiceImpl.java index 34faa3a8b..f8c5b4560 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/SysFileServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/SysFileServiceImpl.java @@ -78,6 +78,7 @@ public class SysFileServiceImpl implements ISysFileService { * @return 结果 */ @Override + @Transactional public int deleteSysFileByFileIds(Long[] fileIds) { return sysFileMapper.deleteSysFileByFileIds(fileIds); } @@ -89,6 +90,7 @@ public class SysFileServiceImpl implements ISysFileService { * @return 结果 */ @Override + @Transactional public int deleteSysFileByFileId(Long fileId) { return sysFileMapper.deleteSysFileByFileId(fileId); } diff --git a/xkt/src/main/resources/mapper/StoreProductStockMapper.xml b/xkt/src/main/resources/mapper/StoreProductStockMapper.xml index 1448033ad..50bb725db 100644 --- a/xkt/src/main/resources/mapper/StoreProductStockMapper.xml +++ b/xkt/src/main/resources/mapper/StoreProductStockMapper.xml @@ -153,4 +153,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + + \ No newline at end of file