diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductDemandController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductDemandController.java index 083089688..d355e8e6a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductDemandController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductDemandController.java @@ -1,15 +1,33 @@ package com.ruoyi.web.controller.xkt; +import cn.hutool.core.bean.BeanUtil; +import com.github.pagehelper.PageInfo; 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.storeProductDemand.StoreProdDemandPageResVO; +import com.ruoyi.web.controller.xkt.vo.storeProductDemand.StoreProdDemandPageVO; +import com.ruoyi.web.controller.xkt.vo.storeProductDemand.StoreProdDemandQuantityVO; +import com.ruoyi.web.controller.xkt.vo.storeProductDemand.StoreProdDemandVO; import com.ruoyi.xkt.domain.StoreProductDemand; +import com.ruoyi.xkt.dto.storeCustomer.StoreCusPageDTO; +import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandDTO; +import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandPageDTO; +import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandPageResDTO; +import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandQuantityDTO; import com.ruoyi.xkt.service.IStoreProductDemandService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; 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; @@ -21,11 +39,13 @@ import java.util.List; * @author ruoyi * @date 2025-03-26 */ +@Api(tags = "档口商品需求单") @RestController +@RequiredArgsConstructor @RequestMapping("/rest/v1/prod-demands") public class StoreProductDemandController extends XktBaseController { - @Autowired - private IStoreProductDemandService storeProductDemandService; + + final IStoreProductDemandService storeProdDemandService; // TODO 入库单判断需求单是否存在 @@ -33,6 +53,42 @@ public class StoreProductDemandController extends XktBaseController { // TODO 入库单判断需求单是否存在 // TODO 入库单判断需求单是否存在 + /** + * 根据货号获取所有颜色的库存数量、在产数量 + */ + @ApiOperation(value = "根据货号获取所有颜色的库存数量、在产数量", httpMethod = "GET", response = R.class) + @PreAuthorize("@ss.hasPermi('system:demand:query')") + @GetMapping(value = "/exists-quantity/{storeId}/{storeProdId}") + public R> getStockAndProduceQuantity(@PathVariable("storeId") Long storeId, @PathVariable("storeProdId") Long storeProdId) { + List list = storeProdDemandService.getStockAndProduceQuantity(storeId, storeProdId); + return CollectionUtils.isEmpty(list) ? R.ok() : R.ok(BeanUtil.copyToList(list, StoreProdDemandQuantityVO.class)); + } + + /** + * 新增档口商品需求单 + */ + @PreAuthorize("@ss.hasPermi('system:demand:add')") + @ApiOperation(value = "新增档口商品需求单", httpMethod = "POST", response = R.class) + @Log(title = "新增档口商品需求单", businessType = BusinessType.INSERT) + @PostMapping("") + public R add(@Validated @RequestBody StoreProdDemandVO prodDemandVO) { + return R.ok(storeProdDemandService.createDemand(BeanUtil.toBean(prodDemandVO, StoreProdDemandDTO.class))); + } + + /** + * 查询档口商品需求单列表 + */ + @PreAuthorize("@ss.hasPermi('system:customer:list')") + @ApiOperation(value = "查询档口商品需求单列表", httpMethod = "POST", response = R.class) + @PostMapping("/page") + public R> selectPage(@Validated @RequestBody StoreProdDemandPageVO pageVO) { + return R.ok(storeProdDemandService.selectPage(BeanUtil.toBean(pageVO, StoreProdDemandPageDTO.class))); + } + + + + + /** @@ -42,7 +98,7 @@ public class StoreProductDemandController extends XktBaseController { @GetMapping("/list") public TableDataInfo list(StoreProductDemand storeProductDemand) { startPage(); - List list = storeProductDemandService.selectStoreProductDemandList(storeProductDemand); + List list = storeProdDemandService.selectStoreProductDemandList(storeProductDemand); return getDataTable(list); } @@ -53,7 +109,7 @@ public class StoreProductDemandController extends XktBaseController { @Log(title = "档口商品需求单", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, StoreProductDemand storeProductDemand) { - List list = storeProductDemandService.selectStoreProductDemandList(storeProductDemand); + List list = storeProdDemandService.selectStoreProductDemandList(storeProductDemand); ExcelUtil util = new ExcelUtil(StoreProductDemand.class); util.exportExcel(response, list, "档口商品需求单数据"); } @@ -64,18 +120,10 @@ public class StoreProductDemandController extends XktBaseController { @PreAuthorize("@ss.hasPermi('system:demand:query')") @GetMapping(value = "/{storeProdDemandId}") public R getInfo(@PathVariable("storeProdDemandId") Long storeProdDemandId) { - return success(storeProductDemandService.selectStoreProductDemandByStoreProdDemandId(storeProdDemandId)); + return success(storeProdDemandService.selectStoreProductDemandByStoreProdDemandId(storeProdDemandId)); } - /** - * 新增档口商品需求单 - */ - @PreAuthorize("@ss.hasPermi('system:demand:add')") - @Log(title = "档口商品需求单", businessType = BusinessType.INSERT) - @PostMapping - public R add(@RequestBody StoreProductDemand storeProductDemand) { - return success(storeProductDemandService.insertStoreProductDemand(storeProductDemand)); - } + /** * 修改档口商品需求单 @@ -84,7 +132,7 @@ public class StoreProductDemandController extends XktBaseController { @Log(title = "档口商品需求单", businessType = BusinessType.UPDATE) @PutMapping public R edit(@RequestBody StoreProductDemand storeProductDemand) { - return success(storeProductDemandService.updateStoreProductDemand(storeProductDemand)); + return success(storeProdDemandService.updateStoreProductDemand(storeProductDemand)); } /** @@ -94,6 +142,6 @@ public class StoreProductDemandController extends XktBaseController { @Log(title = "档口商品需求单", businessType = BusinessType.DELETE) @DeleteMapping("/{storeProdDemandIds}") public R remove(@PathVariable Long[] storeProdDemandIds) { - return success(storeProductDemandService.deleteStoreProductDemandByStoreProdDemandIds(storeProdDemandIds)); + return success(storeProdDemandService.deleteStoreProductDemandByStoreProdDemandIds(storeProdDemandIds)); } } 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 3760bdf60..5a1707ae0 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 @@ -8,25 +8,20 @@ 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.dto.storeProductStock.StoreProdStockDTO; 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; @@ -45,14 +40,13 @@ public class StoreProductStockController extends XktBaseController { final IStoreProductStockService storeProdStockService; + // TODO 商品销售/出库 时读货号,然后查询当前货号颜色的库存 + // TODO 商品销售/出库 时读货号,然后查询当前货号颜色的库存 + // TODO 商品销售/出库 时读货号,然后查询当前货号颜色的库存 + // TODO 商品销售/出库 时读货号,然后查询当前货号颜色的库存 // TODO 商品销售/出库 时读货号,然后查询当前货号颜色的库存 // TODO 商品销售/出库 时读货号,然后查询当前货号颜色的库存 - // TODO 销售出库时扣件库存 - // TODO 销售出库时扣件库存 - // TODO 销售出库时扣件库存 - // TODO 销售出库时扣件库存 - // TODO 销售出库时扣件库存 /** * 查询档口库存列表 @@ -84,7 +78,7 @@ public class StoreProductStockController extends XktBaseController { @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)); + return R.ok(storeProdStockService.updateStock(storeId, Collections.singletonList(BeanUtil.toBean(prodStockVO, StoreProdStockDTO.class)), 0)); } /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStorageDemandDeducteController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStorageDemandDeducteController.java index 198d583b6..c195b6609 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStorageDemandDeducteController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStorageDemandDeducteController.java @@ -6,7 +6,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; -import com.ruoyi.xkt.domain.StoreProductStorageDemandDeducte; +import com.ruoyi.xkt.domain.StoreProductStorageDemandDeduct; import com.ruoyi.xkt.service.IStoreProductStorageDemandDeducteService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -32,9 +32,9 @@ public class StoreProductStorageDemandDeducteController extends XktBaseControlle */ @PreAuthorize("@ss.hasPermi('system:deducte:list')") @GetMapping("/list") - public TableDataInfo list(StoreProductStorageDemandDeducte storeProductStorageDemandDeducte) { + public TableDataInfo list(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte) { startPage(); - List list = storeProductStorageDemandDeducteService.selectStoreProductStorageDemandDeducteList(storeProductStorageDemandDeducte); + List list = storeProductStorageDemandDeducteService.selectStoreProductStorageDemandDeducteList(storeProductStorageDemandDeducte); return getDataTable(list); } @@ -44,9 +44,9 @@ public class StoreProductStorageDemandDeducteController extends XktBaseControlle @PreAuthorize("@ss.hasPermi('system:deducte:export')") @Log(title = "档口商品入库抵扣需求", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(HttpServletResponse response, StoreProductStorageDemandDeducte storeProductStorageDemandDeducte) { - List list = storeProductStorageDemandDeducteService.selectStoreProductStorageDemandDeducteList(storeProductStorageDemandDeducte); - ExcelUtil util = new ExcelUtil(StoreProductStorageDemandDeducte.class); + public void export(HttpServletResponse response, StoreProductStorageDemandDeduct storeProductStorageDemandDeducte) { + List list = storeProductStorageDemandDeducteService.selectStoreProductStorageDemandDeducteList(storeProductStorageDemandDeducte); + ExcelUtil util = new ExcelUtil(StoreProductStorageDemandDeduct.class); util.exportExcel(response, list, "档口商品入库抵扣需求数据"); } @@ -65,7 +65,7 @@ public class StoreProductStorageDemandDeducteController extends XktBaseControlle @PreAuthorize("@ss.hasPermi('system:deducte:add')") @Log(title = "档口商品入库抵扣需求", businessType = BusinessType.INSERT) @PostMapping - public R add(@RequestBody StoreProductStorageDemandDeducte storeProductStorageDemandDeducte) { + public R add(@RequestBody StoreProductStorageDemandDeduct storeProductStorageDemandDeducte) { return success(storeProductStorageDemandDeducteService.insertStoreProductStorageDemandDeducte(storeProductStorageDemandDeducte)); } @@ -75,7 +75,7 @@ public class StoreProductStorageDemandDeducteController extends XktBaseControlle @PreAuthorize("@ss.hasPermi('system:deducte:edit')") @Log(title = "档口商品入库抵扣需求", businessType = BusinessType.UPDATE) @PutMapping - public R edit(@RequestBody StoreProductStorageDemandDeducte storeProductStorageDemandDeducte) { + public R edit(@RequestBody StoreProductStorageDemandDeduct storeProductStorageDemandDeducte) { return success(storeProductStorageDemandDeducteService.updateStoreProductStorageDemandDeducte(storeProductStorageDemandDeducte)); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductDemand/StoreProdDemandPageResVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductDemand/StoreProdDemandPageResVO.java new file mode 100644 index 000000000..dbadc5f17 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductDemand/StoreProdDemandPageResVO.java @@ -0,0 +1,77 @@ +package com.ruoyi.web.controller.xkt.vo.storeProductDemand; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.Date; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("档口商品需求分页返回数据") +@Data +@Accessors(chain = true) +public class StoreProdDemandPageResVO { + + @ApiModelProperty(name = "storeProdDemandId") + private Long storeProdDemandId; + @ApiModelProperty(name = "storeProdDemandDetailId") + private Long storeProdDemandDetailId; + @ApiModelProperty(name = "档口ID") + private Long storeId; + @ApiModelProperty(name = "档口工厂名称") + private String storeFactoryName; + @ApiModelProperty(name = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @ApiModelProperty(name = "编号") + private String code; + @ApiModelProperty(name = "货号") + private String prodArtNum; + @ApiModelProperty(name = "颜色") + private String colorName; + @ApiModelProperty(name = "生产状态") + private String detailStatus; + @ApiModelProperty(name = "紧急单还是正常单") + private String emergency; + @ApiModelProperty(name = "计划生产数量") + private Integer quantity; + @ApiModelProperty(name = "入库数量") + private Integer storageQuantity; + @ApiModelProperty(name = "生产中数量") + private Integer inProdQuantity; + @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/storeProductDemand/StoreProdDemandPageVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductDemand/StoreProdDemandPageVO.java new file mode 100644 index 000000000..3ab51c7c4 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductDemand/StoreProdDemandPageVO.java @@ -0,0 +1,33 @@ +package com.ruoyi.web.controller.xkt.vo.storeProductDemand; + +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 StoreProdDemandPageVO extends BasePageVO { + + @ApiModelProperty(name = "档口ID") + @NotNull(message = "档口ID不能为空") + private Long storeId; + @ApiModelProperty(name = "档口工厂ID") + private Long storeFactoryId; + @ApiModelProperty(name = "商品货号") + private String prodArtNum; + @ApiModelProperty(name = "备注") + private String remark; + @ApiModelProperty(name = "是否紧急单", notes = "0=正常,1=紧急") + private Integer emergency; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductDemand/StoreProdDemandQuantityVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductDemand/StoreProdDemandQuantityVO.java new file mode 100644 index 000000000..ec8ea8fd4 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductDemand/StoreProdDemandQuantityVO.java @@ -0,0 +1,64 @@ +package com.ruoyi.web.controller.xkt.vo.storeProductDemand; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; +import lombok.RequiredArgsConstructor; + +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("档口商品在产数量及库存数量") +@Data +@Builder +public class StoreProdDemandQuantityVO { + + @ApiModelProperty(name = "货号") + private Long storeId; + @ApiModelProperty(name = "档口商品ID") + private Long storeProdId; + @ApiModelProperty(name = "档口商品颜色ID") + private Long storeProdColorId; + @ApiModelProperty(name = "货号") + private String prodArtNum; + @ApiModelProperty(name = "颜色") + private String colorName; + @ApiModelProperty(name = "今天是否提交过需求申请") + private Boolean todaySubmitted; + @ApiModelProperty(name = "数量对比列") + private List compareStrList; + @ApiModelProperty(name = "尺码为30的数量") + private List size30List; + @ApiModelProperty(name = "尺码为31的数量") + private List size31List; + @ApiModelProperty(name = "尺码为32的数量") + private List size32List; + @ApiModelProperty(name = "尺码为33的数量") + private List size33List; + @ApiModelProperty(name = "尺码为34的数量") + private List size34List; + @ApiModelProperty(name = "尺码为35的数量") + private List size35List; + @ApiModelProperty(name = "尺码为36的数量") + private List size36List; + @ApiModelProperty(name = "尺码为37的数量") + private List size37List; + @ApiModelProperty(name = "尺码为38的数量") + private List size38List; + @ApiModelProperty(name = "尺码为39的数量") + private List size39List; + @ApiModelProperty(name = "尺码为40的数量") + private List size40List; + @ApiModelProperty(name = "尺码为41的数量") + private List size41List; + @ApiModelProperty(name = "尺码为42的数量") + private List size42List; + @ApiModelProperty(name = "尺码为43的数量") + private List size43List; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductDemand/StoreProdDemandVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductDemand/StoreProdDemandVO.java new file mode 100644 index 000000000..fc3e50284 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductDemand/StoreProdDemandVO.java @@ -0,0 +1,83 @@ +package com.ruoyi.web.controller.xkt.vo.storeProductDemand; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("档口商品生产需求单") +@Data +public class StoreProdDemandVO { + + @NotNull(message = "档口ID不能为空") + @ApiModelProperty(name = "档口ID") + private Long storeId; + @NotNull(message = "档口工厂ID不能为空") + @ApiModelProperty(name = "档口工厂ID") + private Long storeFactoryId; + @NotNull(message = "需求列表不能为空") + @ApiModelProperty(name = "需求列表") + private List detailList; + + @Data + public static class DetailVO { + @NotNull(message = "档口商品ID不能为空") + @ApiModelProperty(name = "档口商品ID") + private Long storeProdId; + @NotNull(message = "档口商品颜色ID不能为空") + @ApiModelProperty(name = "档口商品颜色ID") + private Long storeProdColorId; + @NotBlank(message = "货号不能为空") + @ApiModelProperty(name = "货号") + private String prodArtNum; + @NotBlank(message = "颜色不能为空") + @ApiModelProperty(name = "颜色") + private String colorName; + @NotBlank(message = "是否紧急单不能为空") + @ApiModelProperty(name = "是否紧急单", notes = "0=正常,1=紧急") + private String emergency; + @ApiModelProperty(name = "总的数量") + private Integer quantity; + @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-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java index b35439a36..900b102a4 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java @@ -172,4 +172,7 @@ public class Constants "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config", "com.ruoyi.generator" }; public static final String UNDELETED = "0"; + + public static final String DELETED = "2"; + } diff --git a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductDemand.java b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductDemand.java index 0a81d19a3..693e38659 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductDemand.java +++ b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductDemand.java @@ -5,6 +5,7 @@ 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 +17,7 @@ import org.apache.commons.lang3.builder.ToStringStyle; */ @EqualsAndHashCode(callSuper = true) @Data +@Accessors(chain = true) public class StoreProductDemand extends XktBaseEntity { private static final long serialVersionUID = 1L; @@ -25,6 +27,16 @@ public class StoreProductDemand extends XktBaseEntity { @TableId private Long id; + /** + * 档口ID + */ + private Long storeId; + + /** + * 档口工厂ID + */ + private Long storeFactoryId; + /** * 档口商品需求code */ @@ -32,10 +44,15 @@ public class StoreProductDemand extends XktBaseEntity { private String code; /** - * 需求状态 + * 需求状态 1 待生产 2 生产中 3 生产完成 */ @Excel(name = "需求状态") - private String demandStatus; + private Integer demandStatus; + + /** + * 备注 + */ + private String remark; @Override 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 85c961bc3..2f1132774 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductDemandDetail.java +++ b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductDemandDetail.java @@ -6,6 +6,7 @@ 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; @@ -17,6 +18,7 @@ import org.apache.commons.lang3.builder.ToStringStyle; */ @EqualsAndHashCode(callSuper = true) @Data +@Accessors(chain = true) public class StoreProductDemandDetail extends XktBaseEntity { private static final long serialVersionUID = 1L; @@ -26,6 +28,11 @@ public class StoreProductDemandDetail extends XktBaseEntity { @TableId private Long id; + /** + * 档口ID + */ + private Long storeId; + /** * 档口商品需求ID */ @@ -38,12 +45,39 @@ public class StoreProductDemandDetail extends XktBaseEntity { @Excel(name = "档口商品颜色ID") private Long storeProdColorId; + /** + * 档口商品货号 + */ + private String prodArtNum; + + /** + * 档口商品颜色 + */ + private String colorName; + /** * 档口商品ID */ @Excel(name = "档口商品ID") private Long storeProdId; + /** + * 是否紧急单(0正常 1紧急) + */ + @Excel(name = "是否紧急单", readConverterExp = "0=正常,1=紧急") + private Integer emergency; + + /** + * 档口商品需求明细状态 + */ + @Excel(name = "档口商品需求明细状态") + private Integer detailStatus; + + /** + * 总的数量 + */ + private Integer quantity; + /** * 尺码30 */ @@ -130,18 +164,6 @@ public class StoreProductDemandDetail extends XktBaseEntity { @TableField("size_43") private Integer size43; - /** - * 是否紧急单(0正常 1紧急) - */ - @Excel(name = "是否紧急单", readConverterExp = "0=正常,1=紧急") - private String emergency; - - /** - * 档口商品需求明细状态 - */ - @Excel(name = "档口商品需求明细状态") - private String detailStatus; - @Override public String toString() { diff --git a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductStorageDemandDeducte.java b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductStorageDemandDeduct.java similarity index 87% rename from xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductStorageDemandDeducte.java rename to xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductStorageDemandDeduct.java index 5363fd59e..ebfd71718 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductStorageDemandDeducte.java +++ b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductStorageDemandDeduct.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; @@ -16,7 +17,7 @@ import org.apache.commons.lang3.builder.ToStringStyle; */ @EqualsAndHashCode(callSuper = true) @Data -public class StoreProductStorageDemandDeducte extends XktBaseEntity { +public class StoreProductStorageDemandDeduct extends XktBaseEntity { private static final long serialVersionUID = 1L; /** @@ -61,88 +62,95 @@ public class StoreProductStorageDemandDeducte extends XktBaseEntity { @Excel(name = "需求code") private String demandCode; + /** + * 总的数量 + */ + private Integer quantity; + /** * 尺码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/dto/storeProductDemand/StoreProdDemandDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductDemand/StoreProdDemandDTO.java new file mode 100644 index 000000000..f6bb5c111 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductDemand/StoreProdDemandDTO.java @@ -0,0 +1,72 @@ +package com.ruoyi.xkt.dto.storeProductDemand; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("档口商品生产需求单") +@Data +@Builder +public class StoreProdDemandDTO { + + @ApiModelProperty(name = "档口ID") + private Long storeId; + @ApiModelProperty(name = "档口工厂ID") + private Long storeFactoryId; + @ApiModelProperty(name = "需求列表") + private List detailList; + + @Data + public static class DetailDTO { + @ApiModelProperty(name = "档口商品ID") + private Long storeProdId; + @ApiModelProperty(name = "档口商品颜色ID") + private Long storeProdColorId; + @ApiModelProperty(name = "货号") + private String prodArtNum; + @ApiModelProperty(name = "颜色") + private String colorName; + @ApiModelProperty(name = "是否紧急单", notes = "0=正常,1=紧急") + private Integer emergency; + @ApiModelProperty(name = "总的数量") + private Integer quantity; + @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/storeProductDemand/StoreProdDemandPageDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductDemand/StoreProdDemandPageDTO.java new file mode 100644 index 000000000..056bc9e94 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductDemand/StoreProdDemandPageDTO.java @@ -0,0 +1,33 @@ +package com.ruoyi.xkt.dto.storeProductDemand; + +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 StoreProdDemandPageDTO extends BasePageDTO { + + @ApiModelProperty(name = "档口ID") + @NotNull(message = "档口ID不能为空") + private Long storeId; + @ApiModelProperty(name = "档口工厂ID") + private Long storeFactoryId; + @ApiModelProperty(name = "商品货号") + private String prodArtNum; + @ApiModelProperty(name = "备注") + private String remark; + @ApiModelProperty(name = "是否紧急单", notes = "0=正常,1=紧急") + private Integer emergency; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductDemand/StoreProdDemandPageResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductDemand/StoreProdDemandPageResDTO.java new file mode 100644 index 000000000..c5283c495 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductDemand/StoreProdDemandPageResDTO.java @@ -0,0 +1,77 @@ +package com.ruoyi.xkt.dto.storeProductDemand; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.Date; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("档口商品需求分页返回数据") +@Data +@Accessors(chain = true) +public class StoreProdDemandPageResDTO { + + @ApiModelProperty(name = "storeProdDemandId") + private Long storeProdDemandId; + @ApiModelProperty(name = "storeProdDemandDetailId") + private Long storeProdDemandDetailId; + @ApiModelProperty(name = "档口ID") + private Long storeId; + @ApiModelProperty(name = "档口工厂名称") + private String storeFactoryName; + @ApiModelProperty(name = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @ApiModelProperty(name = "编号") + private String code; + @ApiModelProperty(name = "货号") + private String prodArtNum; + @ApiModelProperty(name = "颜色") + private String colorName; + @ApiModelProperty(name = "生产状态") + private String detailStatus; + @ApiModelProperty(name = "紧急单还是正常单") + private String emergency; + @ApiModelProperty(name = "计划生产数量") + private Integer quantity; + @ApiModelProperty(name = "入库数量") + private Integer storageQuantity; + @ApiModelProperty(name = "生产中数量") + private Integer inProdQuantity; + @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/storeProductDemand/StoreProdDemandQuantityDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductDemand/StoreProdDemandQuantityDTO.java new file mode 100644 index 000000000..dd366295b --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductDemand/StoreProdDemandQuantityDTO.java @@ -0,0 +1,65 @@ +package com.ruoyi.xkt.dto.storeProductDemand; + +import com.ruoyi.common.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; +import lombok.RequiredArgsConstructor; + +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("档口商品在产数量及库存数量") +@Data +@Builder +public class StoreProdDemandQuantityDTO { + + @ApiModelProperty(name = "货号") + private Long storeId; + @ApiModelProperty(name = "档口商品ID") + private Long storeProdId; + @ApiModelProperty(name = "档口商品颜色ID") + private Long storeProdColorId; + @ApiModelProperty(name = "货号") + private String prodArtNum; + @ApiModelProperty(name = "颜色") + private String colorName; + @ApiModelProperty(name = "今天是否提交过需求申请") + private Boolean todaySubmitted; + @ApiModelProperty(name = "数量对比列") + private List compareStrList; + @ApiModelProperty(name = "尺码为30的数量") + private List size30List; + @ApiModelProperty(name = "尺码为31的数量") + private List size31List; + @ApiModelProperty(name = "尺码为32的数量") + private List size32List; + @ApiModelProperty(name = "尺码为33的数量") + private List size33List; + @ApiModelProperty(name = "尺码为34的数量") + private List size34List; + @ApiModelProperty(name = "尺码为35的数量") + private List size35List; + @ApiModelProperty(name = "尺码为36的数量") + private List size36List; + @ApiModelProperty(name = "尺码为37的数量") + private List size37List; + @ApiModelProperty(name = "尺码为38的数量") + private List size38List; + @ApiModelProperty(name = "尺码为39的数量") + private List size39List; + @ApiModelProperty(name = "尺码为40的数量") + private List size40List; + @ApiModelProperty(name = "尺码为41的数量") + private List size41List; + @ApiModelProperty(name = "尺码为42的数量") + private List size42List; + @ApiModelProperty(name = "尺码为43的数量") + private List size43List; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockUpdateDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockDTO.java similarity index 95% rename from xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockUpdateDTO.java rename to xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockDTO.java index e1d1b973c..15c75e115 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockUpdateDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockDTO.java @@ -10,10 +10,10 @@ import lombok.experimental.Accessors; * @version v1.0 * @date 2025/3/27 15:12 */ -@ApiModel("增加档口商品库存入参") +@ApiModel("档口商品库存数据传输类") @Data @Accessors(chain = true) -public class StoreProdStockUpdateDTO { +public class StoreProdStockDTO { @ApiModelProperty(name = "档口商品库存ID") private Long storeProdStockId; diff --git a/xkt/src/main/java/com/ruoyi/xkt/enums/DemandStatus.java b/xkt/src/main/java/com/ruoyi/xkt/enums/DemandStatus.java new file mode 100644 index 000000000..d8f7d5a11 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/enums/DemandStatus.java @@ -0,0 +1,32 @@ +package com.ruoyi.xkt.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author liangyq + * @date 2025-04-02 23:42 + */ +@Getter +@AllArgsConstructor +public enum DemandStatus { + + // 待生产 + PENDING_PRODUCTION(1, "待生产"), + // 生产中 + IN_PRODUCTION(2, "生产中"), + // 生产完成 + PRODUCTION_COMPLETE(3, "生产完成"); + + private final Integer value; + private final String label; + + public static DemandStatus of(Integer value) { + for (DemandStatus e : DemandStatus.values()) { + if (e.getValue().equals(value)) { + return e; + } + } + throw new IllegalArgumentException("Enum not defined: " + value); + } +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductDemandDetailMapper.java b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductDemandDetailMapper.java index a34bcc006..a5092b817 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductDemandDetailMapper.java +++ b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductDemandDetailMapper.java @@ -2,6 +2,8 @@ package com.ruoyi.xkt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.xkt.domain.StoreProductDemandDetail; +import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandPageDTO; +import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandPageResDTO; import java.util.List; @@ -59,4 +61,13 @@ public interface StoreProductDemandDetailMapper extends BaseMapper selectDemandPage(StoreProdDemandPageDTO pageDTO); + } diff --git a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStorageDemandDeducteMapper.java b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStorageDemandDeductMapper.java similarity index 73% rename from xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStorageDemandDeducteMapper.java rename to xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStorageDemandDeductMapper.java index d65ff5fb2..b9e722f8a 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStorageDemandDeducteMapper.java +++ b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStorageDemandDeductMapper.java @@ -1,7 +1,7 @@ package com.ruoyi.xkt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.ruoyi.xkt.domain.StoreProductStorageDemandDeducte; +import com.ruoyi.xkt.domain.StoreProductStorageDemandDeduct; import java.util.List; @@ -11,14 +11,14 @@ import java.util.List; * @author ruoyi * @date 2025-03-26 */ -public interface StoreProductStorageDemandDeducteMapper extends BaseMapper { +public interface StoreProductStorageDemandDeductMapper extends BaseMapper { /** * 查询档口商品入库抵扣需求 * * @param id 档口商品入库抵扣需求主键 * @return 档口商品入库抵扣需求 */ - public StoreProductStorageDemandDeducte selectStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(Long id); + public StoreProductStorageDemandDeduct selectStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(Long id); /** * 查询档口商品入库抵扣需求列表 @@ -26,7 +26,7 @@ public interface StoreProductStorageDemandDeducteMapper extends BaseMapper selectStoreProductStorageDemandDeducteList(StoreProductStorageDemandDeducte storeProductStorageDemandDeducte); + public List selectStoreProductStorageDemandDeducteList(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte); /** * 新增档口商品入库抵扣需求 @@ -34,7 +34,7 @@ public interface StoreProductStorageDemandDeducteMapper extends BaseMapper getStockAndProduceQuantity(Long storeId, Long storeProdId); + + + /** + * 创建需求订单 + * + * @param demandDTO 商店产品需求信息,包含需求订单的相关数据,如产品ID、需求数量等 + * @return 返回一个字符串,通常包含需求订单的唯一标识或创建状态 + */ + Integer createDemand(StoreProdDemandDTO demandDTO); + + /** + * 根据需求选择页面 + * 此方法用于根据提供的页面查询条件,返回相应的页面数据 + * 主要用于处理分页查询请求,以便在界面上展示特定的需求信息 + * + * @param demandPageDTO 包含页面查询条件的DTO对象,如页码、每页条数等 + * @return Page + */ + Page selectPage(StoreProdDemandPageDTO demandPageDTO); + } 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 23bcc2700..930fc1c73 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStockService.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStockService.java @@ -5,7 +5,7 @@ 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 com.ruoyi.xkt.dto.storeProductStock.StoreProdStockDTO; import java.util.List; @@ -72,7 +72,7 @@ public interface IStoreProductStockService { * @param increaseStockList 增加库存入参 * @return int */ - int increaseStock(Long storeId, List increaseStockList); + int increaseStock(Long storeId, List increaseStockList); /** * 减少库存 @@ -80,7 +80,7 @@ public interface IStoreProductStockService { * @param decreaseStockList 减少库存入参 * @return int */ - int decreaseStock(Long storeId, List decreaseStockList); + int decreaseStock(Long storeId, List decreaseStockList); /** * 清空库存 @@ -97,7 +97,7 @@ public interface IStoreProductStockService { * @param multiplierFactor 乘积因子 0 直接调整库存,将库存更新为页面输入的数量 1 不变数量 * @return int */ - int updateStock(Long storeId, List updateStockList, Integer multiplierFactor); + int updateStock(Long storeId, List updateStockList, Integer multiplierFactor); /** * 查询档口商品分页 diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStorageDemandDeducteService.java b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStorageDemandDeducteService.java index fd4e0bf7a..5b544e803 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStorageDemandDeducteService.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStorageDemandDeducteService.java @@ -1,6 +1,6 @@ package com.ruoyi.xkt.service; -import com.ruoyi.xkt.domain.StoreProductStorageDemandDeducte; +import com.ruoyi.xkt.domain.StoreProductStorageDemandDeduct; import java.util.List; @@ -17,7 +17,7 @@ public interface IStoreProductStorageDemandDeducteService { * @param storeProdStorDemaDeducteId 档口商品入库抵扣需求主键 * @return 档口商品入库抵扣需求 */ - public StoreProductStorageDemandDeducte selectStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(Long storeProdStorDemaDeducteId); + public StoreProductStorageDemandDeduct selectStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(Long storeProdStorDemaDeducteId); /** * 查询档口商品入库抵扣需求列表 @@ -25,7 +25,7 @@ public interface IStoreProductStorageDemandDeducteService { * @param storeProductStorageDemandDeducte 档口商品入库抵扣需求 * @return 档口商品入库抵扣需求集合 */ - public List selectStoreProductStorageDemandDeducteList(StoreProductStorageDemandDeducte storeProductStorageDemandDeducte); + public List selectStoreProductStorageDemandDeducteList(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte); /** * 新增档口商品入库抵扣需求 @@ -33,7 +33,7 @@ public interface IStoreProductStorageDemandDeducteService { * @param storeProductStorageDemandDeducte 档口商品入库抵扣需求 * @return 结果 */ - public int insertStoreProductStorageDemandDeducte(StoreProductStorageDemandDeducte storeProductStorageDemandDeducte); + public int insertStoreProductStorageDemandDeducte(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte); /** * 修改档口商品入库抵扣需求 @@ -41,7 +41,7 @@ public interface IStoreProductStorageDemandDeducteService { * @param storeProductStorageDemandDeducte 档口商品入库抵扣需求 * @return 结果 */ - public int updateStoreProductStorageDemandDeducte(StoreProductStorageDemandDeducte storeProductStorageDemandDeducte); + public int updateStoreProductStorageDemandDeducte(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte); /** * 批量删除档口商品入库抵扣需求 diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/IVoucherSequenceService.java b/xkt/src/main/java/com/ruoyi/xkt/service/IVoucherSequenceService.java index 41f8fbecb..234a328e6 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/IVoucherSequenceService.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IVoucherSequenceService.java @@ -16,6 +16,6 @@ public interface IVoucherSequenceService { * @param voucherDate 单据日期 默认为当天 * @return String */ - public String generateCode(Long storeId, String type, String voucherDate); + String generateCode(Long storeId, String type, String voucherDate); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductDemandServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductDemandServiceImpl.java index 108af9e52..366363337 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductDemandServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductDemandServiceImpl.java @@ -1,14 +1,28 @@ 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.core.page.Page; import com.ruoyi.common.utils.DateUtils; -import com.ruoyi.xkt.domain.StoreProductDemand; -import com.ruoyi.xkt.mapper.StoreProductDemandMapper; +import com.ruoyi.xkt.domain.*; +import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandDTO; +import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandPageDTO; +import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandPageResDTO; +import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandQuantityDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockDTO; +import com.ruoyi.xkt.mapper.*; import com.ruoyi.xkt.service.IStoreProductDemandService; -import org.springframework.beans.factory.annotation.Autowired; +import com.ruoyi.xkt.service.IVoucherSequenceService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * 档口商品需求单Service业务层处理 @@ -17,9 +31,157 @@ import java.util.List; * @date 2025-03-26 */ @Service +@RequiredArgsConstructor public class StoreProductDemandServiceImpl implements IStoreProductDemandService { - @Autowired - private StoreProductDemandMapper storeProductDemandMapper; + + final StoreProductDemandMapper storeProdDemandMapper; + final StoreProductDemandDetailMapper storeProdDemandDetailMapper; + final StoreProductColorMapper storeProdColorMapper; + final StoreProductStockMapper storeProdStockMapper; + final StoreProductMapper storeProdMapper; + final IVoucherSequenceService sequenceService; + final StoreProductStorageDemandDeductMapper storageDemandDeductMapper; + + + /** + * 获取指定门店及商品的库存和生产数量 + * 此方法用于查询特定门店中特定商品的库存和生产数量信息,帮助进行库存管理和生产计划制定 + * + * @param storeId 门店ID,用于指定查询的门店 + * @param storeProdId 门店商品ID,用于指定查询的商品 + * @return 返回一个列表,包含门店商品的库存和生产数量信息的DTO对象 + */ + @Override + @Transactional(readOnly = true) + public List getStockAndProduceQuantity(Long storeId, Long storeProdId) { + List prodColorList = Optional.ofNullable(this.storeProdColorMapper.selectList(new LambdaQueryWrapper() + .eq(StoreProductColor::getStoreId, storeId).eq(StoreProductColor::getDelFlag, "0").eq(StoreProductColor::getStoreProdId, storeProdId))) + .orElseThrow(() -> new RuntimeException("该档口下没有商品及颜色")); + // 找到档口下该商品 + StoreProduct storeProd = Optional.ofNullable(this.storeProdMapper.selectOne(new LambdaQueryWrapper() + .eq(StoreProduct::getId, storeProdId).eq(StoreProduct::getDelFlag, "0"))) + .orElseThrow(() -> new RuntimeException("该档口下没有商品")); + List storeProdColorIdList = prodColorList.stream().map(StoreProductColor::getId).collect(Collectors.toList()); + // 根据各个颜色查询库存信息 + List prodStockList = this.storeProdStockMapper.selectList(new LambdaQueryWrapper() + .in(StoreProductStock::getStoreProdColorId, storeProdColorIdList).eq(StoreProductStock::getDelFlag, "0").eq(StoreProductStock::getStoreId, storeId)); + // 将库存信息封装成Map + Map stockMap = prodStockList.stream().collect(Collectors + .toMap(StoreProductStock::getStoreProdColorId, x -> BeanUtil.toBean(x, StoreProdStockDTO.class))); + // 查询待产及生产中的库存 + List prodDemandList = this.storeProdDemandDetailMapper.selectList(new LambdaQueryWrapper() + .in(StoreProductDemandDetail::getStoreProdColorId, storeProdColorIdList).eq(StoreProductDemandDetail::getDelFlag, "0") + .in(StoreProductDemandDetail::getDetailStatus, Arrays.asList("待生产", "生产中"))); + // 将生产需求信息封转在map中 + Map> demandMap = prodDemandList.stream().collect(Collectors.groupingBy(StoreProductDemandDetail::getStoreProdColorId)); + // 组装返回的对比数量 + List compareStrList = Arrays.asList("库存数量", "在产数量"); + return prodColorList.stream().map(prodColor -> { + StoreProdStockDTO stock = stockMap.get(prodColor.getId()); + List demandDetailList = demandMap.get(prodColor.getId()); + Integer size30Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize30).reduce(0, Integer::sum)).orElse(0); + Integer size31Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize31).reduce(0, Integer::sum)).orElse(0); + Integer size32Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize32).reduce(0, Integer::sum)).orElse(0); + Integer size33Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize33).reduce(0, Integer::sum)).orElse(0); + Integer size34Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize34).reduce(0, Integer::sum)).orElse(0); + Integer size35Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize35).reduce(0, Integer::sum)).orElse(0); + Integer size36Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize36).reduce(0, Integer::sum)).orElse(0); + Integer size37Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize37).reduce(0, Integer::sum)).orElse(0); + Integer size38Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize38).reduce(0, Integer::sum)).orElse(0); + Integer size39Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize39).reduce(0, Integer::sum)).orElse(0); + Integer size40Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize40).reduce(0, Integer::sum)).orElse(0); + Integer size41Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize41).reduce(0, Integer::sum)).orElse(0); + Integer size42Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize42).reduce(0, Integer::sum)).orElse(0); + Integer size43Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize43).reduce(0, Integer::sum)).orElse(0); + // 尺码为30的数组 + List size30List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize30()) ? stock.getSize30().toString() : "0", size30Demand.toString()); + List size31List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize31()) ? stock.getSize31().toString() : "0", size31Demand.toString()); + List size32List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize32()) ? stock.getSize32().toString() : "0", size32Demand.toString()); + List size33List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize33()) ? stock.getSize33().toString() : "0", size33Demand.toString()); + List size34List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize34()) ? stock.getSize34().toString() : "0", size34Demand.toString()); + List size35List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize35()) ? stock.getSize35().toString() : "0", size35Demand.toString()); + List size36List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize36()) ? stock.getSize36().toString() : "0", size36Demand.toString()); + List size37List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize37()) ? stock.getSize37().toString() : "0", size37Demand.toString()); + List size38List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize38()) ? stock.getSize38().toString() : "0", size38Demand.toString()); + List size39List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize39()) ? stock.getSize39().toString() : "0", size39Demand.toString()); + List size40List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize40()) ? stock.getSize40().toString() : "0", size40Demand.toString()); + List size41List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize41()) ? stock.getSize41().toString() : "0", size41Demand.toString()); + List size42List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize42()) ? stock.getSize42().toString() : "0", size42Demand.toString()); + List size43List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize43()) ? stock.getSize43().toString() : "0", size43Demand.toString()); + return StoreProdDemandQuantityDTO.builder().storeId(storeId).storeProdId(storeProd.getId()).storeProdColorId(prodColor.getId()) + .prodArtNum(storeProd.getProdArtNum()).colorName(prodColor.getColorName()).compareStrList(compareStrList) + // 判断 demandDetailList 中是否有 createTime 为当天的对象 + .todaySubmitted(Optional.ofNullable(demandDetailList).orElse(Collections.emptyList()).stream().anyMatch(detail -> DateUtils.isSameDay(detail.getCreateTime(), new Date()))) + .size30List(size30List).size31List(size31List).size32List(size32List).size33List(size33List).size34List(size34List).size35List(size35List) + .size36List(size36List).size37List(size37List).size38List(size38List).size39List(size39List).size40List(size40List).size41List(size41List) + .size42List(size42List).size43List(size43List).build(); + }).collect(Collectors.toList()); + } + + /** + * 创建需求订单 + * + * @param demandDTO 商店产品需求信息,包含需求订单的相关数据,如产品ID、需求数量等 + * @return 返回一个字符串,通常包含需求订单的唯一标识或创建状态 + */ + @Override + @Transactional + public Integer createDemand(StoreProdDemandDTO demandDTO) { + StoreProductDemand demand = new StoreProductDemand(); + // 生成code + demand.setCode(this.sequenceService.generateCode(demandDTO.getStoreId(), "DEMAND", DateUtils.parseDateToStr(DateUtils.YYYYMMDD, new Date()))) + .setDemandStatus(1).setStoreId(demandDTO.getStoreId()).setStoreFactoryId(demandDTO.getStoreFactoryId()); + int count = this.storeProdDemandMapper.insert(demand); + // 生产需求详情 + List detailList = demandDTO.getDetailList().stream() + .map(x -> BeanUtil.toBean(x, StoreProductDemandDetail.class).setStoreId(demandDTO.getStoreId()) + .setStoreProdDemandId(demand.getId()).setDetailStatus(1)).collect(Collectors.toList()); + this.storeProdDemandDetailMapper.insert(detailList); + return count; + } + + /** + * 根据需求选择页面 + * 此方法用于根据提供的页面查询条件,返回相应的页面数据 + * 主要用于处理分页查询请求,以便在界面上展示特定的需求信息 + * + * @param pageDTO 包含页面查询条件的DTO对象,如页码、每页条数等 + * @return 返回一个对象,该对象包含了根据查询条件筛选出的页面数据 + */ + @Override + @Transactional(readOnly = true) + /** + * 根据页面查询条件查询门店生产需求信息 + * + * @param pageDTO 页面查询条件对象,包含页码和页面大小等信息 + * @return 返回一个包含查询结果的分页对象 + */ + public Page selectPage(StoreProdDemandPageDTO pageDTO) { + // 启用分页查询 + PageHelper.startPage(pageDTO.getPageNum(), pageDTO.getPageSize()); + // 执行分页查询,获取需求列表 + List demandList = this.storeProdDemandDetailMapper.selectDemandPage(pageDTO); + // 如果查询结果为空,返回一个空的分页对象 + if (CollectionUtils.isEmpty(demandList)) { + return Page.empty(pageDTO.getPageSize(), pageDTO.getPageNum()); + } + // 提取需求详情ID列表,用于后续查询抵扣信息 + List demandDetailIdList = demandList.stream().map(StoreProdDemandPageResDTO::getStoreProdDemandDetailId).distinct().collect(Collectors.toList()); + // 找到需求单抵扣的数据 + List deductList = this.storageDemandDeductMapper.selectList(new LambdaQueryWrapper() + .in(StoreProductStorageDemandDeduct::getStoreProdStorDetailId, demandDetailIdList).eq(StoreProductStorageDemandDeduct::getDelFlag, "0")); + // 明细抵扣的数量 + Map deductQuantityMap = CollectionUtils.isEmpty(deductList) ? new HashMap<>() + : deductList.stream().collect(Collectors.groupingBy(StoreProductStorageDemandDeduct::getStoreProdStorDetailId, Collectors.summingInt(StoreProductStorageDemandDeduct::getQuantity))); + // 更新需求列表中的每个项,设置库存数量和生产中数量 + demandList.forEach(x -> { + final Integer deductQuantity = deductQuantityMap.getOrDefault(x.getStoreProdDemandDetailId(), 0); + x.setStorageQuantity(deductQuantity).setInProdQuantity(x.getQuantity() - deductQuantity); + }); + // 将查询结果转换为分页对象并返回 + return Page.convert(new PageInfo<>(demandList)); + } + /** * 查询档口商品需求单 @@ -29,7 +191,7 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService */ @Override public StoreProductDemand selectStoreProductDemandByStoreProdDemandId(Long storeProdDemandId) { - return storeProductDemandMapper.selectStoreProductDemandByStoreProdDemandId(storeProdDemandId); + return storeProdDemandMapper.selectStoreProductDemandByStoreProdDemandId(storeProdDemandId); } /** @@ -40,7 +202,7 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService */ @Override public List selectStoreProductDemandList(StoreProductDemand storeProductDemand) { - return storeProductDemandMapper.selectStoreProductDemandList(storeProductDemand); + return storeProdDemandMapper.selectStoreProductDemandList(storeProductDemand); } /** @@ -52,7 +214,7 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService @Override public int insertStoreProductDemand(StoreProductDemand storeProductDemand) { storeProductDemand.setCreateTime(DateUtils.getNowDate()); - return storeProductDemandMapper.insertStoreProductDemand(storeProductDemand); + return storeProdDemandMapper.insertStoreProductDemand(storeProductDemand); } /** @@ -65,7 +227,7 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService @Transactional public int updateStoreProductDemand(StoreProductDemand storeProductDemand) { storeProductDemand.setUpdateTime(DateUtils.getNowDate()); - return storeProductDemandMapper.updateStoreProductDemand(storeProductDemand); + return storeProdDemandMapper.updateStoreProductDemand(storeProductDemand); } /** @@ -76,7 +238,7 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService */ @Override public int deleteStoreProductDemandByStoreProdDemandIds(Long[] storeProdDemandIds) { - return storeProductDemandMapper.deleteStoreProductDemandByStoreProdDemandIds(storeProdDemandIds); + return storeProdDemandMapper.deleteStoreProductDemandByStoreProdDemandIds(storeProdDemandIds); } /** @@ -87,6 +249,8 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService */ @Override public int deleteStoreProductDemandByStoreProdDemandId(Long storeProdDemandId) { - return storeProductDemandMapper.deleteStoreProductDemandByStoreProdDemandId(storeProdDemandId); + return storeProdDemandMapper.deleteStoreProductDemandByStoreProdDemandId(storeProdDemandId); } + + } 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 cad41638f..6979b0764 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 @@ -15,7 +15,7 @@ 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.dto.storeProductStock.StoreProdStockDTO; import com.ruoyi.xkt.mapper.StoreProductFileMapper; import com.ruoyi.xkt.mapper.StoreProductStockMapper; import com.ruoyi.xkt.mapper.SysFileMapper; @@ -90,12 +90,12 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService { */ @Override @Transactional - public int increaseStock(Long storeId, List increaseStockList) { + 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()))); + .in(StoreProductStock::getStoreProdId, increaseStockList.stream().map(StoreProdStockDTO::getStoreProdId).collect(Collectors.toList())) + .in(StoreProductStock::getStoreProdColorId, increaseStockList.stream().map(StoreProdStockDTO::getStoreProdColorId).collect(Collectors.toList()))); // 已存在的档口商品颜色库存map Map existStockMap = existStockList.stream().collect(Collectors.toMap(StoreProductStock::getStoreProdColorId, Function.identity())); // 总的待更新的库存列表 @@ -118,14 +118,14 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService { */ @Override @Transactional - public int decreaseStock(Long storeId, List decreaseStockList) { + 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()))); + .in(StoreProductStock::getStoreProdId, decreaseStockList.stream().map(StoreProdStockDTO::getStoreProdId).collect(Collectors.toList())) + .in(StoreProductStock::getStoreProdColorId, decreaseStockList.stream().map(StoreProdStockDTO::getStoreProdColorId).collect(Collectors.toList()))); // 待扣减的库存map - Map decreaseStockMap = decreaseStockList.stream().collect(Collectors.toMap(StoreProdStockUpdateDTO::getStoreProdColorId, Function.identity())); + Map decreaseStockMap = decreaseStockList.stream().collect(Collectors.toMap(StoreProdStockDTO::getStoreProdColorId, Function.identity())); existStockList.forEach(stock -> this.adjustStock(stock, decreaseStockMap.get(stock.getStoreProdColorId()), Boolean.FALSE)); List list = this.storeProdStockMapper.updateById(existStockList); return list.size(); @@ -160,18 +160,18 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService { */ @Override @Transactional - public int updateStock(Long storeId, List updateStockList, Integer multiplierFactor) { + 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())) + .in(StoreProductStock::getStoreProdId, updateStockList.stream().map(StoreProdStockDTO::getStoreProdId).collect(Collectors.toList())) .eq(StoreProductStock::getStoreId, storeId) .eq(StoreProductStock::getDelFlag, "0"))) .orElseThrow(() -> new ServiceException("档口商品库存不存在!", HttpStatus.ERROR)); // 数据库数据map - Map diffStockMap = updateStockList.stream().collect(Collectors + 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()); + StoreProdStockDTO updateStock = diffStockMap.get(stock.getProdArtNum() + stock.getStoreProdId() + stock.getStoreProdColorId()); if (ObjectUtils.isEmpty(updateStock)) { return; } @@ -322,7 +322,7 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService { * @param isInCrease true 增加库存 false 减少库存 * @return StoreProductStock */ - private StoreProductStock adjustStock(StoreProductStock stock, StoreProdStockUpdateDTO adjustDTO, Boolean isInCrease) { + private StoreProductStock adjustStock(StoreProductStock stock, StoreProdStockDTO adjustDTO, Boolean isInCrease) { if (ObjectUtils.isEmpty(adjustDTO)) { 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 6da49cdeb..5eb114e51 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 @@ -1,8 +1,8 @@ package com.ruoyi.xkt.service.impl; import com.ruoyi.common.utils.DateUtils; -import com.ruoyi.xkt.domain.StoreProductStorageDemandDeducte; -import com.ruoyi.xkt.mapper.StoreProductStorageDemandDeducteMapper; +import com.ruoyi.xkt.domain.StoreProductStorageDemandDeduct; +import com.ruoyi.xkt.mapper.StoreProductStorageDemandDeductMapper; import com.ruoyi.xkt.service.IStoreProductStorageDemandDeducteService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -19,7 +19,7 @@ import java.util.List; @Service public class StoreProductStorageDemandDeducteServiceImpl implements IStoreProductStorageDemandDeducteService { @Autowired - private StoreProductStorageDemandDeducteMapper storeProductStorageDemandDeducteMapper; + private StoreProductStorageDemandDeductMapper storeProductStorageDemandDeducteMapper; /** * 查询档口商品入库抵扣需求 @@ -29,7 +29,7 @@ public class StoreProductStorageDemandDeducteServiceImpl implements IStoreProduc */ @Override @Transactional(readOnly = true) - public StoreProductStorageDemandDeducte selectStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(Long storeProdStorDemaDeducteId) { + public StoreProductStorageDemandDeduct selectStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(Long storeProdStorDemaDeducteId) { return storeProductStorageDemandDeducteMapper.selectStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(storeProdStorDemaDeducteId); } @@ -41,7 +41,7 @@ public class StoreProductStorageDemandDeducteServiceImpl implements IStoreProduc */ @Override @Transactional(readOnly = true) - public List selectStoreProductStorageDemandDeducteList(StoreProductStorageDemandDeducte storeProductStorageDemandDeducte) { + public List selectStoreProductStorageDemandDeducteList(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte) { return storeProductStorageDemandDeducteMapper.selectStoreProductStorageDemandDeducteList(storeProductStorageDemandDeducte); } @@ -53,7 +53,7 @@ public class StoreProductStorageDemandDeducteServiceImpl implements IStoreProduc */ @Override @Transactional - public int insertStoreProductStorageDemandDeducte(StoreProductStorageDemandDeducte storeProductStorageDemandDeducte) { + public int insertStoreProductStorageDemandDeducte(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte) { storeProductStorageDemandDeducte.setCreateTime(DateUtils.getNowDate()); return storeProductStorageDemandDeducteMapper.insertStoreProductStorageDemandDeducte(storeProductStorageDemandDeducte); } @@ -66,7 +66,7 @@ public class StoreProductStorageDemandDeducteServiceImpl implements IStoreProduc */ @Override @Transactional - public int updateStoreProductStorageDemandDeducte(StoreProductStorageDemandDeducte storeProductStorageDemandDeducte) { + public int updateStoreProductStorageDemandDeducte(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte) { storeProductStorageDemandDeducte.setUpdateTime(DateUtils.getNowDate()); return storeProductStorageDemandDeducteMapper.updateStoreProductStorageDemandDeducte(storeProductStorageDemandDeducte); } 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 b32d1e53e..6d461cffc 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,7 +16,7 @@ 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.storeProductStock.StoreProdStockUpdateDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockDTO; import com.ruoyi.xkt.mapper.StoreProductStorageDetailMapper; import com.ruoyi.xkt.mapper.StoreProductStorageMapper; import com.ruoyi.xkt.service.IStoreProductStockService; @@ -89,7 +89,7 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi .setStoreProdStorId(storeProdStorage.getId())).collect(Collectors.toList()); this.storageDetailMapper.insert(detailList); // 构造增加库存的入参DTO - List increaseStockList = BeanUtil.copyToList(detailList, StoreProdStockUpdateDTO.class); + List increaseStockList = BeanUtil.copyToList(detailList, StoreProdStockDTO.class); // 增加档口商品的库存 this.stockService.increaseStock(storeProdStorageDTO.getStoreId(), increaseStockList); return count; @@ -151,7 +151,7 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi this.storageDetailMapper.updateById(storageDetailList); // 减少档口商品库存 this.stockService.decreaseStock(storage.getStoreId(), storageDetailList.stream() - .map(x -> BeanUtil.toBean(x, StoreProdStockUpdateDTO.class)).collect(Collectors.toList())); + .map(x -> BeanUtil.toBean(x, StoreProdStockDTO.class)).collect(Collectors.toList())); return count; } 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 f8bac1247..2d77bf3e1 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 @@ -12,7 +12,7 @@ import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.xkt.domain.*; import com.ruoyi.xkt.dto.storeCustomer.StoreCusGeneralSaleDTO; -import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockUpdateDTO; +import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockDTO; import com.ruoyi.xkt.dto.storeSale.StoreSaleDTO; import com.ruoyi.xkt.dto.storeSale.StoreSalePageDTO; import com.ruoyi.xkt.dto.storeSale.StoreSalePageResDTO; @@ -23,7 +23,6 @@ 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; @@ -301,7 +300,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService { * @param multiplierFactor 1 返回当前库存 -1 减少库存 * @return List */ - private List getStockDiffList(Map> saleCountMap, int multiplierFactor) { + private List getStockDiffList(Map> saleCountMap, int multiplierFactor) { return MapUtils.isEmpty(saleCountMap) ? new ArrayList<>() : saleCountMap.entrySet().stream() .map(entry -> { String[] keys = entry.getKey().split(":"); @@ -309,7 +308,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService { Long storeProdId = Long.parseLong(keys[1]); Long storeProdColorId = Long.parseLong(keys[2]); String colorName = keys[3]; - StoreProdStockUpdateDTO dto = new StoreProdStockUpdateDTO().setProdArtNum(prodArtNum) + StoreProdStockDTO dto = new StoreProdStockDTO().setProdArtNum(prodArtNum) .setStoreProdId(storeProdId).setStoreProdColorId(storeProdColorId).setColorName(colorName); entry.getValue().forEach((size, diffQuantity) -> { // 库存变更数量乘以正负1 diff --git a/xkt/src/main/resources/mapper/StoreProductDemandDetailMapper.xml b/xkt/src/main/resources/mapper/StoreProductDemandDetailMapper.xml index 3b07ad28f..829455e0b 100644 --- a/xkt/src/main/resources/mapper/StoreProductDemandDetailMapper.xml +++ b/xkt/src/main/resources/mapper/StoreProductDemandDetailMapper.xml @@ -168,4 +168,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + + + + \ No newline at end of file diff --git a/xkt/src/main/resources/mapper/StoreProductStorageDemandDeducteMapper.xml b/xkt/src/main/resources/mapper/StoreProductStorageDemandDeducteMapper.xml index 45ab4073f..801ec25bf 100644 --- a/xkt/src/main/resources/mapper/StoreProductStorageDemandDeducteMapper.xml +++ b/xkt/src/main/resources/mapper/StoreProductStorageDemandDeducteMapper.xml @@ -2,9 +2,9 @@ - + - + @@ -34,12 +34,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - select id, store_prod_stor_detail_id, store_prod_demand_id, store_prod_color_id, store_prod_id, storage_code, demand_code, size_30, size_31, size_32, size_33, size_34, size_35, size_36, size_37, size_38, size_39, size_40, size_41, size_42, size_43, version, del_flag, create_by, create_time, update_by, update_time from store_product_storage_demand_deducte + + select id, store_prod_stor_detail_id, store_prod_demand_id, store_prod_color_id, store_prod_id, storage_code, demand_code, size_30, size_31, size_32, size_33, size_34, size_35, size_36, size_37, size_38, size_39, size_40, size_41, size_42, size_43, version, del_flag, create_by, create_time, update_by, update_time from store_product_storage_demand_Deduct - + and store_prod_stor_detail_id = #{storeProdStorDetailId} and store_prod_demand_id = #{storeProdDemandId} @@ -65,13 +65,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + where id = #{id} - - insert into store_product_storage_demand_deducte + + insert into store_product_storage_demand_Deduct store_prod_stor_detail_id, store_prod_demand_id, @@ -130,8 +130,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - update store_product_storage_demand_deducte + + update store_product_storage_demand_Deduct store_prod_stor_detail_id = #{storeProdStorDetailId}, store_prod_demand_id = #{storeProdDemandId}, @@ -163,12 +163,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} - - delete from store_product_storage_demand_deducte where id = #{id} + + delete from store_product_storage_demand_Deduct where id = #{id} - - delete from store_product_storage_demand_deducte where id in + + delete from store_product_storage_demand_Deduct where id in #{id}