master:档口需求单列表;提交生产需求单功能;
parent
56e9a321b7
commit
fe025753ab
|
|
@ -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<List<StoreProdDemandQuantityVO>> getStockAndProduceQuantity(@PathVariable("storeId") Long storeId, @PathVariable("storeProdId") Long storeProdId) {
|
||||
List<StoreProdDemandQuantityDTO> 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<Integer> 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<Page<StoreProdDemandPageResDTO>> 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<StoreProductDemand> list = storeProductDemandService.selectStoreProductDemandList(storeProductDemand);
|
||||
List<StoreProductDemand> 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<StoreProductDemand> list = storeProductDemandService.selectStoreProductDemandList(storeProductDemand);
|
||||
List<StoreProductDemand> list = storeProdDemandService.selectStoreProductDemandList(storeProductDemand);
|
||||
ExcelUtil<StoreProductDemand> util = new ExcelUtil<StoreProductDemand>(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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<Integer> 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));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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<StoreProductStorageDemandDeducte> list = storeProductStorageDemandDeducteService.selectStoreProductStorageDemandDeducteList(storeProductStorageDemandDeducte);
|
||||
List<StoreProductStorageDemandDeduct> 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<StoreProductStorageDemandDeducte> list = storeProductStorageDemandDeducteService.selectStoreProductStorageDemandDeducteList(storeProductStorageDemandDeducte);
|
||||
ExcelUtil<StoreProductStorageDemandDeducte> util = new ExcelUtil<StoreProductStorageDemandDeducte>(StoreProductStorageDemandDeducte.class);
|
||||
public void export(HttpServletResponse response, StoreProductStorageDemandDeduct storeProductStorageDemandDeducte) {
|
||||
List<StoreProductStorageDemandDeduct> list = storeProductStorageDemandDeducteService.selectStoreProductStorageDemandDeducteList(storeProductStorageDemandDeducte);
|
||||
ExcelUtil<StoreProductStorageDemandDeduct> util = new ExcelUtil<StoreProductStorageDemandDeduct>(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));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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<String> compareStrList;
|
||||
@ApiModelProperty(name = "尺码为30的数量")
|
||||
private List<String> size30List;
|
||||
@ApiModelProperty(name = "尺码为31的数量")
|
||||
private List<String> size31List;
|
||||
@ApiModelProperty(name = "尺码为32的数量")
|
||||
private List<String> size32List;
|
||||
@ApiModelProperty(name = "尺码为33的数量")
|
||||
private List<String> size33List;
|
||||
@ApiModelProperty(name = "尺码为34的数量")
|
||||
private List<String> size34List;
|
||||
@ApiModelProperty(name = "尺码为35的数量")
|
||||
private List<String> size35List;
|
||||
@ApiModelProperty(name = "尺码为36的数量")
|
||||
private List<String> size36List;
|
||||
@ApiModelProperty(name = "尺码为37的数量")
|
||||
private List<String> size37List;
|
||||
@ApiModelProperty(name = "尺码为38的数量")
|
||||
private List<String> size38List;
|
||||
@ApiModelProperty(name = "尺码为39的数量")
|
||||
private List<String> size39List;
|
||||
@ApiModelProperty(name = "尺码为40的数量")
|
||||
private List<String> size40List;
|
||||
@ApiModelProperty(name = "尺码为41的数量")
|
||||
private List<String> size41List;
|
||||
@ApiModelProperty(name = "尺码为42的数量")
|
||||
private List<String> size42List;
|
||||
@ApiModelProperty(name = "尺码为43的数量")
|
||||
private List<String> size43List;
|
||||
|
||||
}
|
||||
|
|
@ -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<DetailVO> 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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";
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
||||
|
|
@ -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<DetailDTO> 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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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<String> compareStrList;
|
||||
@ApiModelProperty(name = "尺码为30的数量")
|
||||
private List<String> size30List;
|
||||
@ApiModelProperty(name = "尺码为31的数量")
|
||||
private List<String> size31List;
|
||||
@ApiModelProperty(name = "尺码为32的数量")
|
||||
private List<String> size32List;
|
||||
@ApiModelProperty(name = "尺码为33的数量")
|
||||
private List<String> size33List;
|
||||
@ApiModelProperty(name = "尺码为34的数量")
|
||||
private List<String> size34List;
|
||||
@ApiModelProperty(name = "尺码为35的数量")
|
||||
private List<String> size35List;
|
||||
@ApiModelProperty(name = "尺码为36的数量")
|
||||
private List<String> size36List;
|
||||
@ApiModelProperty(name = "尺码为37的数量")
|
||||
private List<String> size37List;
|
||||
@ApiModelProperty(name = "尺码为38的数量")
|
||||
private List<String> size38List;
|
||||
@ApiModelProperty(name = "尺码为39的数量")
|
||||
private List<String> size39List;
|
||||
@ApiModelProperty(name = "尺码为40的数量")
|
||||
private List<String> size40List;
|
||||
@ApiModelProperty(name = "尺码为41的数量")
|
||||
private List<String> size41List;
|
||||
@ApiModelProperty(name = "尺码为42的数量")
|
||||
private List<String> size42List;
|
||||
@ApiModelProperty(name = "尺码为43的数量")
|
||||
private List<String> size43List;
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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<StoreProductD
|
|||
* @return 结果
|
||||
*/
|
||||
public int deleteStoreProductDemandDetailByStoreProdDemaDetailIds(Long[] storeProdDemaDetailIds);
|
||||
|
||||
/**
|
||||
* 分页查询档口商品需求单明细
|
||||
*
|
||||
* @param pageDTO 分页查询参数
|
||||
* @return 档口商品需求单明细分页列表
|
||||
*/
|
||||
List<StoreProdDemandPageResDTO> selectDemandPage(StoreProdDemandPageDTO pageDTO);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<StoreProductStorageDemandDeducte> {
|
||||
public interface StoreProductStorageDemandDeductMapper extends BaseMapper<StoreProductStorageDemandDeduct> {
|
||||
/**
|
||||
* 查询档口商品入库抵扣需求
|
||||
*
|
||||
* @param id 档口商品入库抵扣需求主键
|
||||
* @return 档口商品入库抵扣需求
|
||||
*/
|
||||
public StoreProductStorageDemandDeducte selectStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(Long id);
|
||||
public StoreProductStorageDemandDeduct selectStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId(Long id);
|
||||
|
||||
/**
|
||||
* 查询档口商品入库抵扣需求列表
|
||||
|
|
@ -26,7 +26,7 @@ public interface StoreProductStorageDemandDeducteMapper extends BaseMapper<Store
|
|||
* @param storeProductStorageDemandDeducte 档口商品入库抵扣需求
|
||||
* @return 档口商品入库抵扣需求集合
|
||||
*/
|
||||
public List<StoreProductStorageDemandDeducte> selectStoreProductStorageDemandDeducteList(StoreProductStorageDemandDeducte storeProductStorageDemandDeducte);
|
||||
public List<StoreProductStorageDemandDeduct> selectStoreProductStorageDemandDeducteList(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte);
|
||||
|
||||
/**
|
||||
* 新增档口商品入库抵扣需求
|
||||
|
|
@ -34,7 +34,7 @@ public interface StoreProductStorageDemandDeducteMapper extends BaseMapper<Store
|
|||
* @param storeProductStorageDemandDeducte 档口商品入库抵扣需求
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertStoreProductStorageDemandDeducte(StoreProductStorageDemandDeducte storeProductStorageDemandDeducte);
|
||||
public int insertStoreProductStorageDemandDeducte(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte);
|
||||
|
||||
/**
|
||||
* 修改档口商品入库抵扣需求
|
||||
|
|
@ -42,7 +42,7 @@ public interface StoreProductStorageDemandDeducteMapper extends BaseMapper<Store
|
|||
* @param storeProductStorageDemandDeducte 档口商品入库抵扣需求
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateStoreProductStorageDemandDeducte(StoreProductStorageDemandDeducte storeProductStorageDemandDeducte);
|
||||
public int updateStoreProductStorageDemandDeducte(StoreProductStorageDemandDeduct storeProductStorageDemandDeducte);
|
||||
|
||||
/**
|
||||
* 删除档口商品入库抵扣需求
|
||||
|
|
@ -1,6 +1,11 @@
|
|||
package com.ruoyi.xkt.service;
|
||||
|
||||
import com.ruoyi.common.core.page.Page;
|
||||
import com.ruoyi.xkt.domain.StoreProductDemand;
|
||||
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 java.util.List;
|
||||
|
||||
|
|
@ -58,4 +63,34 @@ public interface IStoreProductDemandService {
|
|||
* @return 结果
|
||||
*/
|
||||
public int deleteStoreProductDemandByStoreProdDemandId(Long storeProdDemandId);
|
||||
|
||||
/**
|
||||
* 获取指定门店及商品的库存和生产数量
|
||||
* 此方法用于查询特定门店中特定商品的库存和生产数量信息,帮助进行库存管理和生产计划制定
|
||||
*
|
||||
* @param storeId 门店ID,用于指定查询的门店
|
||||
* @param storeProdId 门店商品ID,用于指定查询的商品
|
||||
* @return 返回一个列表,包含门店商品的库存和生产数量信息的DTO对象
|
||||
*/
|
||||
List<StoreProdDemandQuantityDTO> getStockAndProduceQuantity(Long storeId, Long storeProdId);
|
||||
|
||||
|
||||
/**
|
||||
* 创建需求订单
|
||||
*
|
||||
* @param demandDTO 商店产品需求信息,包含需求订单的相关数据,如产品ID、需求数量等
|
||||
* @return 返回一个字符串,通常包含需求订单的唯一标识或创建状态
|
||||
*/
|
||||
Integer createDemand(StoreProdDemandDTO demandDTO);
|
||||
|
||||
/**
|
||||
* 根据需求选择页面
|
||||
* 此方法用于根据提供的页面查询条件,返回相应的页面数据
|
||||
* 主要用于处理分页查询请求,以便在界面上展示特定的需求信息
|
||||
*
|
||||
* @param demandPageDTO 包含页面查询条件的DTO对象,如页码、每页条数等
|
||||
* @return Page<StoreProdDemandPageResDTO>
|
||||
*/
|
||||
Page<StoreProdDemandPageResDTO> selectPage(StoreProdDemandPageDTO demandPageDTO);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<StoreProdStockUpdateDTO> increaseStockList);
|
||||
int increaseStock(Long storeId, List<StoreProdStockDTO> increaseStockList);
|
||||
|
||||
/**
|
||||
* 减少库存
|
||||
|
|
@ -80,7 +80,7 @@ public interface IStoreProductStockService {
|
|||
* @param decreaseStockList 减少库存入参
|
||||
* @return int
|
||||
*/
|
||||
int decreaseStock(Long storeId, List<StoreProdStockUpdateDTO> decreaseStockList);
|
||||
int decreaseStock(Long storeId, List<StoreProdStockDTO> decreaseStockList);
|
||||
|
||||
/**
|
||||
* 清空库存
|
||||
|
|
@ -97,7 +97,7 @@ public interface IStoreProductStockService {
|
|||
* @param multiplierFactor 乘积因子 0 直接调整库存,将库存更新为页面输入的数量 1 不变数量
|
||||
* @return int
|
||||
*/
|
||||
int updateStock(Long storeId, List<StoreProdStockUpdateDTO> updateStockList, Integer multiplierFactor);
|
||||
int updateStock(Long storeId, List<StoreProdStockDTO> updateStockList, Integer multiplierFactor);
|
||||
|
||||
/**
|
||||
* 查询档口商品分页
|
||||
|
|
|
|||
|
|
@ -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<StoreProductStorageDemandDeducte> selectStoreProductStorageDemandDeducteList(StoreProductStorageDemandDeducte storeProductStorageDemandDeducte);
|
||||
public List<StoreProductStorageDemandDeduct> 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);
|
||||
|
||||
/**
|
||||
* 批量删除档口商品入库抵扣需求
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<StoreProdDemandQuantityDTO> getStockAndProduceQuantity(Long storeId, Long storeProdId) {
|
||||
List<StoreProductColor> prodColorList = Optional.ofNullable(this.storeProdColorMapper.selectList(new LambdaQueryWrapper<StoreProductColor>()
|
||||
.eq(StoreProductColor::getStoreId, storeId).eq(StoreProductColor::getDelFlag, "0").eq(StoreProductColor::getStoreProdId, storeProdId)))
|
||||
.orElseThrow(() -> new RuntimeException("该档口下没有商品及颜色"));
|
||||
// 找到档口下该商品
|
||||
StoreProduct storeProd = Optional.ofNullable(this.storeProdMapper.selectOne(new LambdaQueryWrapper<StoreProduct>()
|
||||
.eq(StoreProduct::getId, storeProdId).eq(StoreProduct::getDelFlag, "0")))
|
||||
.orElseThrow(() -> new RuntimeException("该档口下没有商品"));
|
||||
List<Long> storeProdColorIdList = prodColorList.stream().map(StoreProductColor::getId).collect(Collectors.toList());
|
||||
// 根据各个颜色查询库存信息
|
||||
List<StoreProductStock> prodStockList = this.storeProdStockMapper.selectList(new LambdaQueryWrapper<StoreProductStock>()
|
||||
.in(StoreProductStock::getStoreProdColorId, storeProdColorIdList).eq(StoreProductStock::getDelFlag, "0").eq(StoreProductStock::getStoreId, storeId));
|
||||
// 将库存信息封装成Map
|
||||
Map<Long, StoreProdStockDTO> stockMap = prodStockList.stream().collect(Collectors
|
||||
.toMap(StoreProductStock::getStoreProdColorId, x -> BeanUtil.toBean(x, StoreProdStockDTO.class)));
|
||||
// 查询待产及生产中的库存
|
||||
List<StoreProductDemandDetail> prodDemandList = this.storeProdDemandDetailMapper.selectList(new LambdaQueryWrapper<StoreProductDemandDetail>()
|
||||
.in(StoreProductDemandDetail::getStoreProdColorId, storeProdColorIdList).eq(StoreProductDemandDetail::getDelFlag, "0")
|
||||
.in(StoreProductDemandDetail::getDetailStatus, Arrays.asList("待生产", "生产中")));
|
||||
// 将生产需求信息封转在map中
|
||||
Map<Long, List<StoreProductDemandDetail>> demandMap = prodDemandList.stream().collect(Collectors.groupingBy(StoreProductDemandDetail::getStoreProdColorId));
|
||||
// 组装返回的对比数量
|
||||
List<String> compareStrList = Arrays.asList("库存数量", "在产数量");
|
||||
return prodColorList.stream().map(prodColor -> {
|
||||
StoreProdStockDTO stock = stockMap.get(prodColor.getId());
|
||||
List<StoreProductDemandDetail> 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<String> size30List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize30()) ? stock.getSize30().toString() : "0", size30Demand.toString());
|
||||
List<String> size31List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize31()) ? stock.getSize31().toString() : "0", size31Demand.toString());
|
||||
List<String> size32List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize32()) ? stock.getSize32().toString() : "0", size32Demand.toString());
|
||||
List<String> size33List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize33()) ? stock.getSize33().toString() : "0", size33Demand.toString());
|
||||
List<String> size34List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize34()) ? stock.getSize34().toString() : "0", size34Demand.toString());
|
||||
List<String> size35List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize35()) ? stock.getSize35().toString() : "0", size35Demand.toString());
|
||||
List<String> size36List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize36()) ? stock.getSize36().toString() : "0", size36Demand.toString());
|
||||
List<String> size37List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize37()) ? stock.getSize37().toString() : "0", size37Demand.toString());
|
||||
List<String> size38List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize38()) ? stock.getSize38().toString() : "0", size38Demand.toString());
|
||||
List<String> size39List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize39()) ? stock.getSize39().toString() : "0", size39Demand.toString());
|
||||
List<String> size40List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize40()) ? stock.getSize40().toString() : "0", size40Demand.toString());
|
||||
List<String> size41List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize41()) ? stock.getSize41().toString() : "0", size41Demand.toString());
|
||||
List<String> size42List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize42()) ? stock.getSize42().toString() : "0", size42Demand.toString());
|
||||
List<String> 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<StoreProductDemandDetail> 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<StoreProdDemandPageResDTO> selectPage(StoreProdDemandPageDTO pageDTO) {
|
||||
// 启用分页查询
|
||||
PageHelper.startPage(pageDTO.getPageNum(), pageDTO.getPageSize());
|
||||
// 执行分页查询,获取需求列表
|
||||
List<StoreProdDemandPageResDTO> demandList = this.storeProdDemandDetailMapper.selectDemandPage(pageDTO);
|
||||
// 如果查询结果为空,返回一个空的分页对象
|
||||
if (CollectionUtils.isEmpty(demandList)) {
|
||||
return Page.empty(pageDTO.getPageSize(), pageDTO.getPageNum());
|
||||
}
|
||||
// 提取需求详情ID列表,用于后续查询抵扣信息
|
||||
List<Long> demandDetailIdList = demandList.stream().map(StoreProdDemandPageResDTO::getStoreProdDemandDetailId).distinct().collect(Collectors.toList());
|
||||
// 找到需求单抵扣的数据
|
||||
List<StoreProductStorageDemandDeduct> deductList = this.storageDemandDeductMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDemandDeduct>()
|
||||
.in(StoreProductStorageDemandDeduct::getStoreProdStorDetailId, demandDetailIdList).eq(StoreProductStorageDemandDeduct::getDelFlag, "0"));
|
||||
// 明细抵扣的数量
|
||||
Map<Long, Integer> 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<StoreProductDemand> 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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<StoreProdStockUpdateDTO> increaseStockList) {
|
||||
public int increaseStock(Long storeId, List<StoreProdStockDTO> 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())));
|
||||
.in(StoreProductStock::getStoreProdId, increaseStockList.stream().map(StoreProdStockDTO::getStoreProdId).collect(Collectors.toList()))
|
||||
.in(StoreProductStock::getStoreProdColorId, increaseStockList.stream().map(StoreProdStockDTO::getStoreProdColorId).collect(Collectors.toList())));
|
||||
// 已存在的档口商品颜色库存map
|
||||
Map<Long, StoreProductStock> 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<StoreProdStockUpdateDTO> decreaseStockList) {
|
||||
public int decreaseStock(Long storeId, List<StoreProdStockDTO> 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())));
|
||||
.in(StoreProductStock::getStoreProdId, decreaseStockList.stream().map(StoreProdStockDTO::getStoreProdId).collect(Collectors.toList()))
|
||||
.in(StoreProductStock::getStoreProdColorId, decreaseStockList.stream().map(StoreProdStockDTO::getStoreProdColorId).collect(Collectors.toList())));
|
||||
// 待扣减的库存map
|
||||
Map<Long, StoreProdStockUpdateDTO> decreaseStockMap = decreaseStockList.stream().collect(Collectors.toMap(StoreProdStockUpdateDTO::getStoreProdColorId, Function.identity()));
|
||||
Map<Long, StoreProdStockDTO> decreaseStockMap = decreaseStockList.stream().collect(Collectors.toMap(StoreProdStockDTO::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();
|
||||
|
|
@ -160,18 +160,18 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService {
|
|||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int updateStock(Long storeId, List<StoreProdStockUpdateDTO> updateStockList, Integer multiplierFactor) {
|
||||
public int updateStock(Long storeId, List<StoreProdStockDTO> 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()))
|
||||
.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<String, StoreProdStockUpdateDTO> diffStockMap = updateStockList.stream().collect(Collectors
|
||||
Map<String, StoreProdStockDTO> 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());
|
||||
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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<StoreProductStorageDemandDeducte> selectStoreProductStorageDemandDeducteList(StoreProductStorageDemandDeducte storeProductStorageDemandDeducte) {
|
||||
public List<StoreProductStorageDemandDeduct> 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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<StoreProdStockUpdateDTO> increaseStockList = BeanUtil.copyToList(detailList, StoreProdStockUpdateDTO.class);
|
||||
List<StoreProdStockDTO> 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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<StoreProdStockUpdateDTO>
|
||||
*/
|
||||
private List<StoreProdStockUpdateDTO> getStockDiffList(Map<String, Map<Integer, Integer>> saleCountMap, int multiplierFactor) {
|
||||
private List<StoreProdStockDTO> 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(":");
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -168,4 +168,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
|
||||
<select id="selectDemandPage" parameterType="com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandPageDTO" resultType="com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandPageResDTO">
|
||||
SELECT spdd.store_id, spdd.id AS storeProdDemandDetailId, spdd.store_prod_demand_id AS storeProdDemandId, sf.fac_name, spdd.create_time, spd.`code`, spdd.prod_art_num,
|
||||
spdd.color_name, spdd.quantity, spd.remark,
|
||||
CASE
|
||||
spdd.detail_status
|
||||
WHEN 1 THEN '待生产'
|
||||
WHEN 2 THEN '生产中'
|
||||
ELSE '生产完成'
|
||||
END AS detail_status,
|
||||
CASE
|
||||
spdd.emergency
|
||||
WHEN 0 THEN
|
||||
'正常单'
|
||||
WHEN 1 THEN
|
||||
'紧急单'
|
||||
END AS emergency,
|
||||
spdd.size_30 AS size30, spdd.size_31 AS size33, spdd.size_32 AS size32, spdd.size_33 AS size33, spdd.size_34 AS size34, spdd.size_35 AS size35, spdd.size_36 AS size36,
|
||||
spdd.size_37 AS size37, spdd.size_38 AS size38, spdd.size_39 AS size39, spdd.size_40 AS size40, spdd.size_41 AS size41, spdd.size_42 AS size42, spdd.size_43 AS size43
|
||||
FROM
|
||||
store_product_demand_detail spdd
|
||||
LEFT JOIN store_product_demand spd ON spdd.store_prod_demand_id = spd.id
|
||||
LEFT JOIN store_factory sf ON spd.store_factory_id = sf.id
|
||||
WHERE
|
||||
spdd.del_flag = 0 AND spdd.store_id = #{storeId}
|
||||
<if test="prodArtNum != null and prodArtNum != ''"> and spdd.prod_art_num = #{prodArtNum}</if>
|
||||
<if test="storeFactoryId != null "> and sf.id = #{storeFactoryId}</if>
|
||||
<if test="remark != null and remark != ''"> and menu_name like concat('%', #{menuName}, '%')</if>
|
||||
<if test="emergency != null "> and spdd.emergency = #{emergency}</if>
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
|
@ -2,9 +2,9 @@
|
|||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ruoyi.xkt.mapper.StoreProductStorageDemandDeducteMapper">
|
||||
<mapper namespace="com.ruoyi.xkt.mapper.StoreProductStorageDemandDeductMapper">
|
||||
|
||||
<resultMap type="StoreProductStorageDemandDeducte" id="StoreProductStorageDemandDeducteResult">
|
||||
<resultMap type="StoreProductStorageDemandDeduct" id="StoreProductStorageDemandDeductResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="storeProdStorDetailId" column="store_prod_stor_detail_id" />
|
||||
<result property="storeProdDemandId" column="store_prod_demand_id" />
|
||||
|
|
@ -34,12 +34,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="updateTime" column="update_time" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectStoreProductStorageDemandDeducteVo">
|
||||
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
|
||||
<sql id="selectStoreProductStorageDemandDeductVo">
|
||||
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
|
||||
</sql>
|
||||
|
||||
<select id="selectStoreProductStorageDemandDeducteList" parameterType="StoreProductStorageDemandDeducte" resultMap="StoreProductStorageDemandDeducteResult">
|
||||
<include refid="selectStoreProductStorageDemandDeducteVo"/>
|
||||
<select id="selectStoreProductStorageDemandDeductList" parameterType="StoreProductStorageDemandDeduct" resultMap="StoreProductStorageDemandDeductResult">
|
||||
<include refid="selectStoreProductStorageDemandDeductVo"/>
|
||||
<where>
|
||||
<if test="storeProdStorDetailId != null "> and store_prod_stor_detail_id = #{storeProdStorDetailId}</if>
|
||||
<if test="storeProdDemandId != null "> and store_prod_demand_id = #{storeProdDemandId}</if>
|
||||
|
|
@ -65,13 +65,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId" parameterType="Long" resultMap="StoreProductStorageDemandDeducteResult">
|
||||
<include refid="selectStoreProductStorageDemandDeducteVo"/>
|
||||
<select id="selectStoreProductStorageDemandDeductByStoreProdStorDemaDeductId" parameterType="Long" resultMap="StoreProductStorageDemandDeductResult">
|
||||
<include refid="selectStoreProductStorageDemandDeductVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<insert id="insertStoreProductStorageDemandDeducte" parameterType="StoreProductStorageDemandDeducte" useGeneratedKeys="true" keyProperty="storeProdStorDemaDeducteId">
|
||||
insert into store_product_storage_demand_deducte
|
||||
<insert id="insertStoreProductStorageDemandDeduct" parameterType="StoreProductStorageDemandDeduct" useGeneratedKeys="true" keyProperty="storeProdStorDemaDeductId">
|
||||
insert into store_product_storage_demand_Deduct
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="storeProdStorDetailId != null">store_prod_stor_detail_id,</if>
|
||||
<if test="storeProdDemandId != null">store_prod_demand_id,</if>
|
||||
|
|
@ -130,8 +130,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateStoreProductStorageDemandDeducte" parameterType="StoreProductStorageDemandDeducte">
|
||||
update store_product_storage_demand_deducte
|
||||
<update id="updateStoreProductStorageDemandDeduct" parameterType="StoreProductStorageDemandDeduct">
|
||||
update store_product_storage_demand_Deduct
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="storeProdStorDetailId != null">store_prod_stor_detail_id = #{storeProdStorDetailId},</if>
|
||||
<if test="storeProdDemandId != null">store_prod_demand_id = #{storeProdDemandId},</if>
|
||||
|
|
@ -163,12 +163,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteId" parameterType="Long">
|
||||
delete from store_product_storage_demand_deducte where id = #{id}
|
||||
<delete id="deleteStoreProductStorageDemandDeductByStoreProdStorDemaDeductId" parameterType="Long">
|
||||
delete from store_product_storage_demand_Deduct where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteStoreProductStorageDemandDeducteByStoreProdStorDemaDeducteIds" parameterType="String">
|
||||
delete from store_product_storage_demand_deducte where id in
|
||||
<delete id="deleteStoreProductStorageDemandDeductByStoreProdStorDemaDeductIds" parameterType="String">
|
||||
delete from store_product_storage_demand_Deduct where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
|
|
|
|||
Loading…
Reference in New Issue