master:销售出库、入库单同步调整库存模块;
parent
eebb4a65a4
commit
fef8af2864
|
|
@ -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));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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<Page> 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<Integer> 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<Integer> 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<StoreProductStock> list = storeProductStockService.selectStoreProductStockList(storeProductStock);
|
||||
List<StoreProductStock> 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<StoreProductStock> list = storeProductStockService.selectStoreProductStockList(storeProductStock);
|
||||
List<StoreProductStock> list = storeProdStockService.selectStoreProductStockList(storeProductStock);
|
||||
ExcelUtil<StoreProductStock> util = new ExcelUtil<StoreProductStock>(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));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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> 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));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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 = "尺码")
|
||||
|
|
|
|||
|
|
@ -48,16 +48,6 @@ public class Page<T> implements Serializable {
|
|||
*/
|
||||
private List<T> list;
|
||||
|
||||
/**
|
||||
* 消息状态码
|
||||
*/
|
||||
private int code = HttpStatus.SUCCESS;
|
||||
|
||||
/**
|
||||
* 消息内容
|
||||
*/
|
||||
private String msg = "操作成功";
|
||||
|
||||
public static <T> Page<T> convert(PageInfo<?> pageInfo) {
|
||||
return BeanUtil.toBean(pageInfo, Page.class);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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 = "尺码")
|
||||
|
|
|
|||
|
|
@ -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<StoreProductStock> {
|
|||
* @return 结果
|
||||
*/
|
||||
public int deleteStoreProductStockByStoreProdStockIds(Long[] storeProdStockIds);
|
||||
|
||||
/**
|
||||
* 档口商品库存分页查询
|
||||
* @param pageDTO 查询参数
|
||||
* @return 结果
|
||||
*/
|
||||
List<StoreProdStockPageResDTO> selectStockPage(StoreProdStockPageDTO pageDTO);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<StoreProdStockUpdateDTO> increaseStockList);
|
||||
|
||||
/**
|
||||
* 减少库存
|
||||
* @param storeId 档口ID
|
||||
* @param decreaseStockList 减少库存入参
|
||||
* @return int
|
||||
*/
|
||||
int decreaseStock(Long storeId, List<StoreProdStockUpdateDTO> 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<StoreProdStockUpdateDTO> updateStockList, Integer multiplierFactor);
|
||||
|
||||
/**
|
||||
* 查询档口商品分页
|
||||
* @param pageDTO 分页入参
|
||||
* @return List<StoreProdStockPageResDTO>
|
||||
*/
|
||||
Page<StoreProdStockPageResDTO> selectPage(StoreProdStockPageDTO pageDTO);
|
||||
|
||||
/**
|
||||
* 根据档口ID和商品货号查询档口商品库存
|
||||
* @param storeId 档口ID
|
||||
* @param prodArtNum 商品货号
|
||||
* @return String
|
||||
*/
|
||||
List<StoreProdStockResDTO> selectByStoreIdAndProdArtNum(Long storeId, String prodArtNum);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ public class StoreProductBarcodeRecordServiceImpl implements IStoreProductBarcod
|
|||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int deleteStoreProductBarcodeRecordByStoreProdBarcodeRecordIds(Long[] storeProdBarcodeRecordIds) {
|
||||
return storeProductBarcodeRecordMapper.deleteStoreProductBarcodeRecordByStoreProdBarcodeRecordIds(storeProdBarcodeRecordIds);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<StoreProdStockPageResDTO> selectPage(StoreProdStockPageDTO pageDTO) {
|
||||
PageHelper.startPage(pageDTO.getPageNum(), pageDTO.getPageSize());
|
||||
List<StoreProdStockPageResDTO> stockList = this.storeProdStockMapper.selectStockPage(pageDTO);
|
||||
if (CollectionUtils.isEmpty(stockList)) {
|
||||
return Page.empty(pageDTO.getPageSize(), pageDTO.getPageNum());
|
||||
}
|
||||
// 提取查询结果中的商店产品ID列表
|
||||
List<Long> storeProdIdList = stockList.stream().map(StoreProdStockPageResDTO::getStoreProdId).collect(Collectors.toList());
|
||||
// 查找排名第一个商品主图列表
|
||||
List<StoreProdMainPicDTO> mainPicList = this.storeProdFileMapper.selectMainPicByStoreProdIdList(storeProdIdList, "MAIN_PIC", 1);
|
||||
Map<Long, String> 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<StoreProdStockResDTO> selectByStoreIdAndProdArtNum(Long storeId, String prodArtNum) {
|
||||
List<StoreProductStock> stockList = this.storeProdStockMapper.selectList(new LambdaQueryWrapper<StoreProductStock>()
|
||||
.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<StoreProdStockUpdateDTO> increaseStockList) {
|
||||
// 根据关键信息找到已存在的库存
|
||||
List<StoreProductStock> existStockList = this.storeProdStockMapper.selectList(new LambdaQueryWrapper<StoreProductStock>()
|
||||
.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<Long, StoreProductStock> existStockMap = existStockList.stream().collect(Collectors.toMap(StoreProductStock::getStoreProdColorId, Function.identity()));
|
||||
// 总的待更新的库存列表
|
||||
List<StoreProductStock> 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<BatchResult> list = this.storeProdStockMapper.insertOrUpdate(stockList);
|
||||
return list.size();
|
||||
}
|
||||
|
||||
/**
|
||||
* 减少库存
|
||||
*
|
||||
* @param storeId 档口ID
|
||||
* @param decreaseStockList 减少库存入参
|
||||
* @return int
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int decreaseStock(Long storeId, List<StoreProdStockUpdateDTO> decreaseStockList) {
|
||||
// 根据关键信息找到已存在的库存
|
||||
List<StoreProductStock> existStockList = this.storeProdStockMapper.selectList(new LambdaQueryWrapper<StoreProductStock>()
|
||||
.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<Long, StoreProdStockUpdateDTO> decreaseStockMap = decreaseStockList.stream().collect(Collectors.toMap(StoreProdStockUpdateDTO::getStoreProdColorId, Function.identity()));
|
||||
existStockList.forEach(stock -> this.adjustStock(stock, decreaseStockMap.get(stock.getStoreProdColorId()), Boolean.FALSE));
|
||||
List<BatchResult> 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<StoreProductStock>()
|
||||
.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<StoreProdStockUpdateDTO> updateStockList, Integer multiplierFactor) {
|
||||
List<StoreProductStock> stockList = Optional.ofNullable(this.storeProdStockMapper.selectList(new LambdaQueryWrapper<StoreProductStock>()
|
||||
.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<String, StoreProdStockUpdateDTO> diffStockMap = updateStockList.stream().collect(Collectors
|
||||
.toMap(stock -> stock.getProdArtNum() + stock.getStoreProdId() + stock.getStoreProdColorId(), Function.identity()));
|
||||
List<StoreProductStock> 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<BatchResult> 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<StoreProductStock>()
|
||||
.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<StoreProductFile>()
|
||||
.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<SysFile>()
|
||||
.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<StoreProductStock> 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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@ public class StoreProductStorageDetailServiceImpl implements IStoreProductStorag
|
|||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int deleteStoreProductStorageDetailByStoreProdStorDetailIds(Long[] storeProdStorDetailIds) {
|
||||
return storeProductStorageDetailMapper.deleteStoreProductStorageDetailByStoreProdStorDetailIds(storeProdStorDetailIds);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<StoreProductStorageDetail> detailList = storeProdStorageDTO.getDetailList().stream().map(x -> BeanUtil.toBean(x, StoreProductStorageDetail.class)
|
||||
.setStoreProdStorId(storeProdStorage.getId())).collect(Collectors.toList());
|
||||
this.storageDetailMapper.insert(detailList);
|
||||
// 构造增加库存的入参DTO
|
||||
List<StoreProdStockUpdateDTO> 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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<StoreSaleDetail> 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<String, Map<Integer, Integer>> 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<StoreSaleDetail> 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<StoreSaleDetail> totalList = new ArrayList<StoreSaleDetail>(saleDetailList){{
|
||||
addAll(detailList);
|
||||
}};
|
||||
// 先汇总当前这笔订单商品明细的销售数量,包括销售及退货 key: prodArtNum + storeProdId + storeProdColorId + colorName, value: map(key:size,value:count)
|
||||
Map<String, Map<Integer, Integer>> 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<StoreSale>()
|
||||
.eq(StoreSale::getId, storeSaleId).eq(StoreSale::getDelFlag, "0")))
|
||||
|
|
@ -275,6 +260,13 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
|
|||
List<StoreSaleDetail> saleDetailList = this.storeSaleDetailMapper.selectList(new LambdaQueryWrapper<StoreSaleDetail>()
|
||||
.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<String, Map<Integer, Integer>> 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<StoreProdStockUpdateDTO>
|
||||
*/
|
||||
private List<StoreProdStockUpdateDTO> getStockDiffList(Map<String, Map<Integer, Integer>> 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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -153,4 +153,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<select id="selectStockPage" parameterType="com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageDTO" resultType="com.ruoyi.xkt.dto.storeProductStock.StoreProdStockPageResDTO">
|
||||
SELECT
|
||||
id AS stockProdStockId, store_prod_id, prod_art_num, color_name,
|
||||
size_30 AS size30, size_31 AS size31, size_32 AS size32, size_33 AS size33, size_34 AS size34, size_35 AS size35, size_36 AS size36, size_37 AS size37,
|
||||
size_38 AS size38, size_39 AS size39, size_40 AS size40, size_41 AS size41, size_42 AS size42, size_43 AS size43,
|
||||
(IFNULL(size_30, 0) + IFNULL(size_31, 0) + IFNULL(size_32, 0) + IFNULL(size_33, 0) +
|
||||
IFNULL(size_34, 0) + IFNULL(size_35, 0) + IFNULL(size_36, 0) + IFNULL(size_37, 0) +
|
||||
IFNULL(size_38, 0) + IFNULL(size_39, 0) + IFNULL(size_40, 0) + IFNULL(size_41, 0) +
|
||||
IFNULL(size_42, 0) + IFNULL(size_43, 0)) AS totalStock
|
||||
FROM
|
||||
store_product_stock
|
||||
WHERE
|
||||
del_flag = 0
|
||||
AND store_id = #{storeId}
|
||||
<if test="prodArtNum != null and prodArtNum != ''"> and prod_art_num like concat('%', #{prodArtNum}, '%')</if>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue