master:系统初始化枚举状态;

pull/1121/head
liujiang 2025-04-05 10:38:13 +08:00
parent a3f91cedb6
commit 715dedf78b
53 changed files with 402 additions and 241 deletions

View File

@ -30,7 +30,7 @@ public class StoreProdPageResVO {
@ApiModelProperty(name = "销售金额(元)")
private BigDecimal price;
@ApiModelProperty(name = "状态")
private String prodStatus;
private Integer prodStatus;
@ApiModelProperty(name = "创建时间")
private Date createTime;

View File

@ -42,7 +42,7 @@ public class StoreProdResVO {
@ApiModelProperty(name = "发货时效")
private Integer deliveryTime;
@ApiModelProperty(name = "上架方式")
private String listingWay;
private Integer listingWay;
@ApiModelProperty(name = "定时发货时间(精确到小时)")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date listingWaySchedule;

View File

@ -22,6 +22,6 @@ public class StoreProdStatusVO {
private List<Long> storeProdIdList;
@NotBlank(message = "档口商品状态不能为空!")
@ApiModelProperty("档口商品状态")
private String prodStatus;
private Integer prodStatus;
}

View File

@ -54,10 +54,10 @@ public class StoreProdVO {
private Integer deliveryTime;
@ApiModelProperty(name = "上架方式")
@NotBlank(message = "上架方式不能为空!")
private String listingWay;
private Integer listingWay;
@ApiModelProperty(name = "商品状态")
@NotBlank(message = "商品状态不能为空!")
private String prodStatus;
private Integer prodStatus;
@ApiModelProperty(name = "定时发货时间(精确到小时)")
@JsonFormat(pattern = "yyyy-MM-dd HH")
private Date listingWaySchedule;

View File

@ -26,7 +26,7 @@ public class StoreProdStoragePageVO extends BasePageVO {
@ApiModelProperty(name = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "入库类型")
private String storageType;
private Integer storageType;
@ApiModelProperty(name = "销售开始时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTimeStart;

View File

@ -31,7 +31,7 @@ public class StoreProdStorageResVO {
@ApiModelProperty(name = "单据编号")
private String code;
@ApiModelProperty(name = "入库类型")
private String storageType;
private Integer storageType;
@ApiModelProperty(name = "数量")
private Integer quantity;
@ApiModelProperty(name = "生产成本金额")

View File

@ -28,7 +28,7 @@ public class StoreProdStorageVO {
private Long storeId;
@NotBlank(message = "入库类型不能为空!")
@ApiModelProperty(name = "入库类型")
private String storageType;
private Integer storageType;
@Valid
@NotNull(message = "商品入库明细列表不能为空!")
@ApiModelProperty(name = "商品入库明细列表")

View File

@ -38,7 +38,7 @@ public class StoreProdDemandPageResVO {
@ApiModelProperty(name = "生产状态")
private String detailStatus;
@ApiModelProperty(name = "紧急单还是正常单")
private String emergency;
private Integer emergency;
@ApiModelProperty(name = "计划生产数量")
private Integer quantity;
@ApiModelProperty(name = "入库数量")

View File

@ -46,8 +46,8 @@ public class StoreProdDemandVO {
@ApiModelProperty(name = "颜色")
private String colorName;
@NotBlank(message = "是否紧急单不能为空")
@ApiModelProperty(name = "是否紧急单", notes = "0=正常,1=紧急")
private String emergency;
@ApiModelProperty(name = "是否紧急单", notes = "2=正常,1=紧急")
private Integer emergency;
@ApiModelProperty(name = "总的数量")
private Integer quantity;
@ApiModelProperty(name = "尺码30")

View File

@ -27,12 +27,12 @@ public class StoreSalePageVO extends BasePageVO {
private String prodArtNum;
@ApiModelProperty(name = "客户名称")
private String cusName;
@ApiModelProperty(name = "销售类型", notes = "普通销售、销售退货、普通销售/销售退货 GENERAL_SALE SALE_REFUND SALE_AND_REFUND")
private String saleType;
@ApiModelProperty(name = "销售类型", notes = "销售、退货、销售/退货 1 2 3")
private Integer saleType;
@ApiModelProperty(name = "结款状态")
private String paymentStatus;
private Integer paymentStatus;
@ApiModelProperty(name = "支付方式")
private String payWay;
private Integer payWay;
@ApiModelProperty(name = "销售开始时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTimeStart;

View File

@ -35,14 +35,14 @@ public class StoreSaleVO {
@ApiModelProperty(name = "档口客户名称")
@NotBlank(message = "档口客户名称不能为空!")
private String storeCusName;
@ApiModelProperty(name = "销售类型(普通销售 GENERAL_SALE、销售退货 SALE_REFUND、普通销售/销售退货 SALE_AND_REFUND")
@ApiModelProperty(name = "销售类型(销售 1、退货 2、销售/退货 3")
@NotBlank(message = "销售类型不能为空!")
private String saleType;
private Integer saleType;
@NotBlank(message = "支付方式不能为空!")
@ApiModelProperty(name = "支付方式支付宝、微信、现金、欠款ALIPAY WECHAT_PAY CASH DEBT")
private String payWay;
private Integer payWay;
@ApiModelProperty(name = "结款状态(已结清、欠款) SETTLED、DEBT")
private String paymentStatus;
private Integer paymentStatus;
@NotNull(message = "销售详情列表不能为空!")
@Valid
@ApiModelProperty(name = "销售详情列表")

View File

@ -30,7 +30,7 @@ public class StoreSaleRefundRecordVO {
@JsonFormat(pattern = "HH:mm", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty(name = "支付方式支付宝、微信、现金、欠款ALIPAY WECHAT_PAY CASH DEBT")
private String payWay;
private Integer payWay;
@ApiModelProperty(name = "数量")
private Integer quantity;
@ApiModelProperty(name = "总金额")

View File

@ -94,7 +94,7 @@ public class StoreProduct extends XktBaseEntity {
*
*/
@Excel(name = "上架方式", readConverterExp = "立=即上架、定时上架")
private String listingWay;
private Integer listingWay;
/**
*
@ -120,7 +120,7 @@ public class StoreProduct extends XktBaseEntity {
*
*/
@Excel(name = "商品状态")
private String prodStatus;
private Integer prodStatus;
@Override
public String toString() {

View File

@ -52,10 +52,10 @@ public class StoreProductColorSize extends XktBaseEntity {
private String barcodePrefix;
/**
* 0 1
* 2 1
*/
@Excel(name = "是否是标准尺码", readConverterExp = "0=不是,1=是")
private String standard;
@Excel(name = "是否是标准尺码", readConverterExp = "2=不是,1=是")
private Integer standard;
@Override
public String toString() {

View File

@ -62,9 +62,9 @@ public class StoreProductDemandDetail extends XktBaseEntity {
private Long storeProdId;
/**
* 0 1
* 2 1
*/
@Excel(name = "是否紧急单", readConverterExp = "0=正常,1=紧急")
@Excel(name = "是否紧急单", readConverterExp = "2=正常,1=紧急")
private Integer emergency;
/**

View File

@ -48,10 +48,10 @@ public class StoreProductFile extends XktBaseEntity {
private Long fileId;
/**
*
* 123
*/
@Excel(name = "文件类型", readConverterExp = "主=图、视频、下载")
private String fileType;
private Integer fileType;
/**
* M

View File

@ -39,10 +39,10 @@ public class StoreProductStorage extends XktBaseEntity {
@Excel(name = "入库CODE")
private String code;
/**
* PROD_STORAGE OTHER_STORAGE REPAIR_STORAGE
* 1 PROD_STORAGE 2 OTHER_STORAGE 3 REPAIR_STORAGE
*/
@Excel(name = "入库类型")
private String storageType;
private Integer storageType;
/**
*
*/

View File

@ -74,11 +74,11 @@ public class StoreSale extends XktBaseEntity {
*
*/
@Excel(name = "支付方式", readConverterExp = "支=付宝、微信、现金、欠款")
private String payWay;
private Integer payWay;
/**
* SETTLEDDEBT
*/
private String paymentStatus;
private Integer paymentStatus;
/**
* ID
*/

View File

@ -52,10 +52,10 @@ public class StoreSaleDetail extends XktBaseEntity {
*/
private Integer size;
/**
* 退
* 12退3/退
*/
@Excel(name = "销售类型", readConverterExp = "普=通销售、销售退货")
private String saleType;
private Integer saleType;
/**
*
*/

View File

@ -27,7 +27,7 @@ public class StoreProdStorageDTO {
private Long storeId;
@NotBlank(message = "入库类型不能为空!")
@ApiModelProperty(name = "入库类型")
private String storageType;
private Integer storageType;
@Valid
@NotNull(message = "商品入库明细列表不能为空!")
@ApiModelProperty(name = "商品入库明细列表")

View File

@ -25,7 +25,7 @@ public class StoreProdStoragePageDTO extends BasePageDTO {
@ApiModelProperty(name = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "入库类型")
private String storageType;
private Integer storageType;
@ApiModelProperty(name = "销售开始时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTimeStart;

View File

@ -24,7 +24,7 @@ public class StoreProdStoragePageResDTO {
@ApiModelProperty(name = "单据编号")
private String code;
@ApiModelProperty(name = "入库类型")
private String storageType;
private Integer storageType;
@ApiModelProperty(name = "数量")
private Integer quantity;
@ApiModelProperty(name = "生产成本金额")

View File

@ -31,7 +31,7 @@ public class StoreProdStorageResDTO {
@ApiModelProperty(name = "单据编号")
private String code;
@ApiModelProperty(name = "入库类型")
private String storageType;
private Integer storageType;
@ApiModelProperty(name = "数量")
private Integer quantity;
@ApiModelProperty(name = "生产成本金额")

View File

@ -51,9 +51,9 @@ public class StoreProdDTO {
@ApiModelProperty(name = "发货时效")
private Integer deliveryTime;
@ApiModelProperty(name = "上架方式")
private String listingWay;
private Integer listingWay;
@ApiModelProperty(name = "商品状态")
private String prodStatus;
private Integer prodStatus;
@ApiModelProperty(name = "定时发货时间(精确到小时)")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date listingWaySchedule;

View File

@ -40,7 +40,7 @@ public class StoreProdPageResDTO {
@ApiModelProperty(name = "销售金额(元)")
private BigDecimal price;
@ApiModelProperty(name = "状态")
private String prodStatus;
private Integer prodStatus;
@ApiModelProperty(name = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;

View File

@ -51,7 +51,7 @@ public class StoreProdResDTO {
@ApiModelProperty(name = "发货时效")
private Integer deliveryTime;
@ApiModelProperty(name = "上架方式")
private String listingWay;
private Integer listingWay;
@ApiModelProperty(name = "定时发货时间(精确到小时)")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date listingWaySchedule;

View File

@ -18,6 +18,6 @@ public class StoreProdStatusDTO {
@ApiModelProperty("档口商品名称")
private List<Long> storeProdIdList;
@ApiModelProperty("档口商品状态")
private String prodStatus;
private Integer prodStatus;
}

View File

@ -36,9 +36,9 @@ public class StoreProdDemandPageResDTO {
@ApiModelProperty(name = "颜色")
private String colorName;
@ApiModelProperty(name = "生产状态")
private String detailStatus;
private Integer detailStatus;
@ApiModelProperty(name = "紧急单还是正常单")
private String emergency;
private Integer emergency;
@ApiModelProperty(name = "计划生产数量")
private Integer quantity;
@ApiModelProperty(name = "入库数量")

View File

@ -29,12 +29,12 @@ public class StoreSaleDTO {
private Long storeCusId;
@ApiModelProperty(name = "档口客户名称")
private String storeCusName;
@ApiModelProperty(name = "销售类型(普通销售 GENERAL_SALE、销售退货 SALE_REFUND、普通销售/销售退货 SALE_AND_REFUND")
private String saleType;
@ApiModelProperty(name = "支付方式(支付宝、微信、现金、欠款)ALIPAY WECHAT_PAY CASH DEBT")
private String payWay;
@ApiModelProperty(name = "结款状态(已结清、欠款) SETTLED、DEBT")
private String paymentStatus;
@ApiModelProperty(name = "销售类型(销售 1、退货 2、销售/退货 3")
private Integer saleType;
@ApiModelProperty(name = "支付方式(支付宝、微信、现金、欠款)1ALIPAY 2WECHAT_PAY 3CASH 4DEBT")
private Integer payWay;
@ApiModelProperty(name = "结款状态(已结清、欠款) 1、2")
private Integer paymentStatus;
@ApiModelProperty(name = "销售详情列表")
private List<SaleDetailVO> detailList;

View File

@ -27,12 +27,12 @@ public class StoreSalePageDTO extends BasePageDTO {
private String prodArtNum;
@ApiModelProperty(name = "客户名称")
private String cusName;
@ApiModelProperty(name = "销售类型", notes = "普通销售、销售退货、普通销售/销售退货 GENERAL_SALE SALE_REFUND SALE_AND_REFUND")
private String saleType;
@ApiModelProperty(name = "销售类型", notes = "销售、退货、销售/退货 1 2 3")
private Integer saleType;
@ApiModelProperty(name = "结款状态")
private String paymentStatus;
private Integer paymentStatus;
@ApiModelProperty(name = "支付方式")
private String payWay;
private Integer payWay;
@ApiModelProperty(name = "销售开始时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTimeStart;

View File

@ -28,16 +28,16 @@ public class StoreSalePageResDTO {
@ApiModelProperty(name = "销售时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty(name = "销售类型(普通销售、销售退货、普通销售/销售退货GENERAL_SALE SALE_REFUND SALE_AND_REFUND")
private String saleType;
@ApiModelProperty(name = "销售类型(1销售、2退货、3销售/退货)")
private Integer saleType;
@ApiModelProperty(name = "销售数量")
private Integer quantity;
@ApiModelProperty(name = "总金额")
private BigDecimal amount;
@ApiModelProperty(name = "结款状态")
private String paymentStatus;
private Integer paymentStatus;
@ApiModelProperty(name = "支付方式")
private String payWay;
private Integer payWay;
@ApiModelProperty(name = "操作人")
private String operatorName;
@ApiModelProperty(name = "备注")

View File

@ -30,7 +30,7 @@ public class StoreSaleRefundRecordDTO {
@JsonFormat(pattern = "HH:mm", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty(name = "支付方式支付宝、微信、现金、欠款ALIPAY WECHAT_PAY CASH DEBT")
private String payWay;
private Integer payWay;
@ApiModelProperty(name = "数量")
private Integer quantity;
@ApiModelProperty(name = "总金额")

View File

@ -11,16 +11,16 @@ import lombok.Getter;
@AllArgsConstructor
public enum EProductStatus {
UN_PUBLISHED("UN_PUBLISHED", "未发布"),
ON_SALE("ON_SALE", "在售"),
TAIL_GOODS("TAIL_GOODS", "尾货"),
OFF_SALE("OFF_SALE", "已下架"),
REMOVED("REMOVED", "已删除");
UN_PUBLISHED(1, "未发布"),
ON_SALE(2, "在售"),
TAIL_GOODS(3, "尾货"),
OFF_SALE(4, "已下架"),
REMOVED(5, "已删除");
private final String value;
private final Integer value;
private final String label;
public static EProductStatus of(String value) {
public static EProductStatus of(Integer value) {
for (EProductStatus e : EProductStatus.values()) {
if (e.getValue().equals(value)) {
return e;
@ -35,7 +35,7 @@ public enum EProductStatus {
* @param value
* @return
*/
public static boolean accessOrder(String value) {
public static boolean accessOrder(Integer value) {
return ON_SALE.getValue().equals(value) || TAIL_GOODS.getValue().equals(value);
}
}

View File

@ -0,0 +1,28 @@
package com.ruoyi.xkt.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author liangyq
* @date 2025-04-02 23:42
*/
@Getter
@AllArgsConstructor
public enum EmergencyType {
PROD_STORAGE(1, "紧急单"),
OTHER_STORAGE(2, "正常单");
private final Integer value;
private final String label;
public static EmergencyType of(Integer value) {
for (EmergencyType e : EmergencyType.values()) {
if (e.getValue().equals(value)) {
return e;
}
}
return null;
}
}

View File

@ -0,0 +1,29 @@
package com.ruoyi.xkt.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author liangyq
* @date 2025-04-02 23:42
*/
@Getter
@AllArgsConstructor
public enum FileType {
MAIN_PIC(1, "商品主图"),
MAIN_PIC_VIDEO(2, "商品主图视频"),
DOWNLOAD(3, "商品下载图片包");
private final Integer value;
private final String label;
public static FileType of(Integer value) {
for (FileType e : FileType.values()) {
if (e.getValue().equals(value)) {
return e;
}
}
return null;
}
}

View File

@ -0,0 +1,28 @@
package com.ruoyi.xkt.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author liangyq
* @date 2025-04-02 23:42
*/
@Getter
@AllArgsConstructor
public enum ListingType {
RIGHT_NOW(1, "立即上架"),
TIME_SCHEDULE(2, "定时上架");
private final Integer value;
private final String label;
public static ListingType of(Integer value) {
for (ListingType e : ListingType.values()) {
if (e.getValue().equals(value)) {
return e;
}
}
return null;
}
}

View File

@ -0,0 +1,30 @@
package com.ruoyi.xkt.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author liangyq
* @date 2025-04-02 23:42
*/
@Getter
@AllArgsConstructor
public enum PayWay {
ALIPAY(1, "支付宝"),
WECHAT_PAY(2, "微信支付"),
CASH(3, "现金"),
DEBT(4, "欠款");
private final Integer value;
private final String label;
public static PayWay of(Integer value) {
for (PayWay e : PayWay.values()) {
if (e.getValue().equals(value)) {
return e;
}
}
return null;
}
}

View File

@ -0,0 +1,29 @@
package com.ruoyi.xkt.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author liangyq
* @date 2025-04-02 23:42
*/
@Getter
@AllArgsConstructor
public enum PaymentStatus {
SETTLED(1, "已结清"),
DEBT(2, "欠款");
private final Integer value;
private final String label;
public static PaymentStatus of(Integer value) {
for (PaymentStatus e : PaymentStatus.values()) {
if (e.getValue().equals(value)) {
return e;
}
}
return null;
}
}

View File

@ -0,0 +1,29 @@
package com.ruoyi.xkt.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author liangyq
* @date 2025-04-02 23:42
*/
@Getter
@AllArgsConstructor
public enum ProductSizeStatus {
STANDARD(1, "标准码"),
UN_STANDARD(2, "非标准码");
private final Integer value;
private final String label;
public static ProductSizeStatus of(Integer value) {
for (ProductSizeStatus e : ProductSizeStatus.values()) {
if (e.getValue().equals(value)) {
return e;
}
}
return null;
}
}

View File

@ -0,0 +1,29 @@
package com.ruoyi.xkt.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author liangyq
* @date 2025-04-02 23:42
*/
@Getter
@AllArgsConstructor
public enum SaleType {
GENERAL_SALE(1, "销售"),
SALE_REFUND(2, "退货"),
SALE_AND_REFUND(3, "销售/退货");
private final Integer value;
private final String label;
public static SaleType of(Integer value) {
for (SaleType e : SaleType.values()) {
if (e.getValue().equals(value)) {
return e;
}
}
return null;
}
}

View File

@ -0,0 +1,29 @@
package com.ruoyi.xkt.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author liangyq
* @date 2025-04-02 23:42
*/
@Getter
@AllArgsConstructor
public enum StorageType {
PROD_STORAGE(1, "生产入库"),
OTHER_STORAGE(2, "其它入库"),
REPAIR_STORAGE(3, "维修入库");
private final Integer value;
private final String label;
public static StorageType of(Integer value) {
for (StorageType e : StorageType.values()) {
if (e.getValue().equals(value)) {
return e;
}
}
return null;
}
}

View File

@ -83,7 +83,7 @@ public interface StoreProductFileMapper extends BaseMapper<StoreProductFile> {
* @return DTO
*/
List<StoreProdMainPicDTO> selectMainPicByStoreProdIdList(@Param("storeProdIdList") List<Long> storeProdIdList,
@Param("fileType") String fileType,
@Param("fileType") Integer fileType,
@Param("orderNum") Integer orderNum);
/**
@ -93,6 +93,6 @@ public interface StoreProductFileMapper extends BaseMapper<StoreProductFile> {
* @param fileType
* @return List<StoreProdFilePicSpaceResDTO>
*/
List<StoreProdFilePicSpaceResDTO> selectPicSpaceList(@Param("storeId") Long storeId, @Param("fileType") String fileType);
List<StoreProdFilePicSpaceResDTO> selectPicSpaceList(@Param("storeId") Long storeId, @Param("fileType") Integer fileType);
}

View File

@ -2,6 +2,7 @@ package com.ruoyi.xkt.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
@ -49,7 +50,7 @@ public class StoreCustomerProductDiscountServiceImpl implements IStoreCustomerPr
@Transactional
public Integer updateStoreCusProdDiscount(StoreCusProdDiscountDTO cusProdDisDTO) {
List<StoreCustomer> storeCusList = this.storeCusMapper.selectList(new LambdaQueryWrapper<StoreCustomer>()
.eq(StoreCustomer::getStoreId, cusProdDisDTO.getStoreId()).eq(StoreCustomer::getDelFlag, "0")
.eq(StoreCustomer::getStoreId, cusProdDisDTO.getStoreId()).eq(StoreCustomer::getDelFlag, Constants.UNDELETED)
.eq(StoreCustomer::getCusName, cusProdDisDTO.getStoreCusName()));
if (ObjectUtils.isNotEmpty(storeCusList) && storeCusList.size() > 1) {
throw new ServiceException("客户名称重复,请修改客户名称!", HttpStatus.CONFLICT);
@ -57,7 +58,7 @@ public class StoreCustomerProductDiscountServiceImpl implements IStoreCustomerPr
StoreCustomer storeCus = CollectionUtils.isNotEmpty(storeCusList) ? storeCusList.get(0) : this.createStoreCustomer(cusProdDisDTO);
// 获取当前档口客户已有的优惠
List<StoreCustomerProductDiscount> cusProdDisList = Optional.ofNullable(cusProdDiscountMapper.selectList(new LambdaQueryWrapper<StoreCustomerProductDiscount>()
.eq(StoreCustomerProductDiscount::getStoreCusName, cusProdDisDTO.getStoreCusName()).eq(StoreCustomerProductDiscount::getDelFlag, "0")
.eq(StoreCustomerProductDiscount::getStoreCusName, cusProdDisDTO.getStoreCusName()).eq(StoreCustomerProductDiscount::getDelFlag, Constants.UNDELETED)
.eq(StoreCustomerProductDiscount::getStoreId, cusProdDisDTO.getStoreId()))).orElse(new ArrayList<>());
// 已存在优惠但优惠额度低于当前优惠,则更新该部分优惠
List<StoreCustomerProductDiscount> updateList = cusProdDisList.stream()
@ -69,7 +70,7 @@ public class StoreCustomerProductDiscountServiceImpl implements IStoreCustomerPr
List<Long> existDiscountProdColorIdList = cusProdDisList.stream().map(StoreCustomerProductDiscount::getStoreProdColorId).collect(Collectors.toList());
// 档口所有的商品
List<StoreProductColor> storeProdColorList = this.storeProdColorMapper.selectList(new LambdaQueryWrapper<StoreProductColor>()
.eq(StoreProductColor::getStoreId, cusProdDisDTO.getStoreId()).eq(StoreProductColor::getDelFlag, "0"));
.eq(StoreProductColor::getStoreId, cusProdDisDTO.getStoreId()).eq(StoreProductColor::getDelFlag, Constants.UNDELETED));
// 绑定其它商品的优惠
List<StoreCustomerProductDiscount> addDiscountList = storeProdColorList.stream().filter(x -> !existDiscountProdColorIdList.contains(x.getId()))
.map(x -> BeanUtil.toBean(x, StoreCustomerProductDiscount.class).setDiscount(cusProdDisDTO.getDiscount()).setStoreProdColorId(x.getId())

View File

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.page.Page;
import com.ruoyi.common.exception.ServiceException;
@ -50,7 +51,7 @@ public class StoreCustomerServiceImpl implements IStoreCustomerService {
@Transactional(readOnly = true)
public List<StoreCusFuzzyResDTO> fuzzyQueryList(Long storeId, String cusName) {
LambdaQueryWrapper<StoreCustomer> queryWrapper = new LambdaQueryWrapper<StoreCustomer>()
.eq(StoreCustomer::getStoreId, storeId).eq(StoreCustomer::getDelFlag, "0");
.eq(StoreCustomer::getStoreId, storeId).eq(StoreCustomer::getDelFlag, Constants.UNDELETED);
if (StringUtils.isNotBlank(cusName)) {
queryWrapper.like(StoreCustomer::getCusName, cusName);
}
@ -69,9 +70,9 @@ public class StoreCustomerServiceImpl implements IStoreCustomerService {
@Transactional
public void deleteStoreCus(Long storeCusId) {
StoreCustomer storeCus = Optional.ofNullable(this.storeCusMapper.selectOne(new LambdaQueryWrapper<StoreCustomer>()
.eq(StoreCustomer::getId, storeCusId).eq(StoreCustomer::getDelFlag, "0")))
.eq(StoreCustomer::getId, storeCusId).eq(StoreCustomer::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口客户不存在!"));
storeCus.setDelFlag("2");
storeCus.setDelFlag(Constants.DELETED);
this.storeCusMapper.updateById(storeCus);
}
@ -79,7 +80,7 @@ public class StoreCustomerServiceImpl implements IStoreCustomerService {
@Transactional(readOnly = true)
public Page<StoreCusPageResDTO> selectPage(StoreCusPageDTO storeCusPageDTO) {
LambdaQueryWrapper<StoreCustomer> queryWrapper = new LambdaQueryWrapper<StoreCustomer>()
.eq(StoreCustomer::getStoreId, storeCusPageDTO.getStoreId()).eq(StoreCustomer::getDelFlag, "0");
.eq(StoreCustomer::getStoreId, storeCusPageDTO.getStoreId()).eq(StoreCustomer::getDelFlag, Constants.UNDELETED);
if (StringUtils.isNotBlank(storeCusPageDTO.getCusName())) {
queryWrapper.like(StoreCustomer::getCusName, storeCusPageDTO.getCusName());
}
@ -95,7 +96,7 @@ public class StoreCustomerServiceImpl implements IStoreCustomerService {
public int updateStoreCus(StoreCusDTO storeCusDTO) {
Optional.ofNullable(storeCusDTO.getStoreCusId()).orElseThrow(() -> new ServiceException("档口客户ID不可为空!"));
StoreCustomer storeCus = Optional.ofNullable(this.storeCusMapper.selectOne(new LambdaQueryWrapper<StoreCustomer>()
.eq(StoreCustomer::getId, storeCusDTO.getStoreCusId()).eq(StoreCustomer::getDelFlag, "0")))
.eq(StoreCustomer::getId, storeCusDTO.getStoreCusId()).eq(StoreCustomer::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口客户不存在!"));
BeanUtil.copyProperties(storeCusDTO, storeCus);
return storeCusMapper.updateStoreCustomer(storeCus);
@ -112,7 +113,7 @@ public class StoreCustomerServiceImpl implements IStoreCustomerService {
@Transactional(readOnly = true)
public StoreCusDTO selectStoreCustomerByStoreCusId(Long storeCusId) {
StoreCustomer storeCus = Optional.ofNullable(storeCusMapper.selectOne(new LambdaQueryWrapper<StoreCustomer>()
.eq(StoreCustomer::getId, storeCusId).eq(StoreCustomer::getDelFlag, "0")))
.eq(StoreCustomer::getId, storeCusId).eq(StoreCustomer::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口客户不存在!", HttpStatus.ERROR));
return BeanUtil.toBean(storeCus, StoreCusDTO.class);
}

View File

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.page.Page;
import com.ruoyi.common.exception.ServiceException;
@ -60,7 +61,7 @@ public class StoreFactoryServiceImpl implements IStoreFactoryService {
throw new ServiceException("storeFactoryId不可为空!", HttpStatus.ERROR);
}
StoreFactory storeFactory = Optional.ofNullable(this.storeFactoryMapper.selectOne(new LambdaQueryWrapper<StoreFactory>()
.eq(StoreFactory::getId, storeFactoryDTO.getStoreFactoryId()).eq(StoreFactory::getDelFlag, "0")))
.eq(StoreFactory::getId, storeFactoryDTO.getStoreFactoryId()).eq(StoreFactory::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口合作工厂不存在!", HttpStatus.ERROR));
BeanUtil.copyProperties(storeFactoryDTO, storeFactory);
return storeFactoryMapper.updateById(storeFactory);
@ -77,7 +78,7 @@ public class StoreFactoryServiceImpl implements IStoreFactoryService {
public Page<StoreFactoryResDTO> selectFactoryPage(StoreFactoryPageDTO pageDTO) {
// 创建查询条件对象用于构建SQL查询语句
LambdaQueryWrapper<StoreFactory> queryWrapper = new LambdaQueryWrapper<StoreFactory>()
.eq(StoreFactory::getStoreId, pageDTO.getStoreId()).eq(StoreFactory::getDelFlag, "0");
.eq(StoreFactory::getStoreId, pageDTO.getStoreId()).eq(StoreFactory::getDelFlag, Constants.UNDELETED);
// 如果工厂名称不为空,则添加模糊查询条件
if (StringUtils.isNotBlank(pageDTO.getFacName())) {
queryWrapper.like(StoreFactory::getFacName, pageDTO.getFacName());
@ -100,7 +101,7 @@ public class StoreFactoryServiceImpl implements IStoreFactoryService {
@Transactional(readOnly = true)
public StoreFactoryResDTO selectByStoreFacId(Long storeId, Long storeFacId) {
StoreFactory storeFactory = Optional.ofNullable(this.storeFactoryMapper.selectOne(new LambdaQueryWrapper<StoreFactory>()
.eq(StoreFactory::getId, storeFacId).eq(StoreFactory::getDelFlag, "0").eq(StoreFactory::getStoreId, storeId)))
.eq(StoreFactory::getId, storeFacId).eq(StoreFactory::getDelFlag, Constants.UNDELETED).eq(StoreFactory::getStoreId, storeId)))
.orElseThrow(() -> new ServiceException("档口合作工厂不存在!", HttpStatus.ERROR));
return BeanUtil.toBean(storeFactory, StoreFactoryResDTO.class);
}

View File

@ -172,7 +172,7 @@ public class StoreOrderServiceImpl implements IStoreOrderService {
.eq(XktBaseEntity::getDelFlag, Constants.UNDELETED));
Assert.notNull(productColorPrice, "无法获取商品定价");
BigDecimal price = productColorPrice.getPrice();
if ("0".equals(storeProductColorSize.getStandard())) {
if (ProductSizeStatus.UN_STANDARD.getValue().equals(storeProductColorSize.getStandard())) {
//非标准尺码
StoreProduct product = storeProductMapper.selectById(storeProductColorSize.getStoreProdId());
BigDecimal addPrice = BigDecimal.valueOf(NumberUtil.nullToZero(product.getOverPrice()));

View File

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.page.Page;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.xkt.domain.*;
@ -12,6 +13,7 @@ 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.enums.EVoucherSequenceType;
import com.ruoyi.xkt.mapper.*;
import com.ruoyi.xkt.service.IStoreProductDemandService;
import com.ruoyi.xkt.service.IVoucherSequenceService;
@ -55,22 +57,22 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService
@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)))
.eq(StoreProductColor::getStoreId, storeId).eq(StoreProductColor::getDelFlag, Constants.UNDELETED).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")))
.eq(StoreProduct::getId, storeProdId).eq(StoreProduct::getDelFlag, Constants.UNDELETED)))
.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));
.in(StoreProductStock::getStoreProdColorId, storeProdColorIdList).eq(StoreProductStock::getDelFlag, Constants.UNDELETED).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::getStoreProdColorId, storeProdColorIdList).eq(StoreProductDemandDetail::getDelFlag, Constants.UNDELETED)
.in(StoreProductDemandDetail::getDetailStatus, Arrays.asList("待生产", "生产中")));
// 将生产需求信息封转在map中
Map<Long, List<StoreProductDemandDetail>> demandMap = prodDemandList.stream().collect(Collectors.groupingBy(StoreProductDemandDetail::getStoreProdColorId));
@ -94,20 +96,20 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService
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());
List<String> size30List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize30()) ? stock.getSize30().toString() : Constants.UNDELETED, size30Demand.toString());
List<String> size31List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize31()) ? stock.getSize31().toString() : Constants.UNDELETED, size31Demand.toString());
List<String> size32List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize32()) ? stock.getSize32().toString() : Constants.UNDELETED, size32Demand.toString());
List<String> size33List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize33()) ? stock.getSize33().toString() : Constants.UNDELETED, size33Demand.toString());
List<String> size34List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize34()) ? stock.getSize34().toString() : Constants.UNDELETED, size34Demand.toString());
List<String> size35List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize35()) ? stock.getSize35().toString() : Constants.UNDELETED, size35Demand.toString());
List<String> size36List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize36()) ? stock.getSize36().toString() : Constants.UNDELETED, size36Demand.toString());
List<String> size37List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize37()) ? stock.getSize37().toString() : Constants.UNDELETED, size37Demand.toString());
List<String> size38List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize38()) ? stock.getSize38().toString() : Constants.UNDELETED, size38Demand.toString());
List<String> size39List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize39()) ? stock.getSize39().toString() : Constants.UNDELETED, size39Demand.toString());
List<String> size40List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize40()) ? stock.getSize40().toString() : Constants.UNDELETED, size40Demand.toString());
List<String> size41List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize41()) ? stock.getSize41().toString() : Constants.UNDELETED, size41Demand.toString());
List<String> size42List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize42()) ? stock.getSize42().toString() : Constants.UNDELETED, size42Demand.toString());
List<String> size43List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize43()) ? stock.getSize43().toString() : Constants.UNDELETED, size43Demand.toString());
return StoreProdDemandQuantityDTO.builder().storeId(storeId).storeProdId(storeProd.getId()).storeProdColorId(prodColor.getId())
.prodArtNum(storeProd.getProdArtNum()).colorName(prodColor.getColorName()).compareStrList(compareStrList)
// 判断 demandDetailList 中是否有 createTime 为当天的对象
@ -129,7 +131,7 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService
public Integer createDemand(StoreProdDemandDTO demandDTO) {
StoreProductDemand demand = new StoreProductDemand();
// 生成code
demand.setCode(this.sequenceService.generateCode(demandDTO.getStoreId(), "DEMAND", DateUtils.parseDateToStr(DateUtils.YYYYMMDD, new Date())))
demand.setCode(this.sequenceService.generateCode(demandDTO.getStoreId(), EVoucherSequenceType.DEMAND.getValue(), DateUtils.parseDateToStr(DateUtils.YYYYMMDD, new Date())))
.setDemandStatus(1).setStoreId(demandDTO.getStoreId()).setStoreFactoryId(demandDTO.getStoreFactoryId());
int count = this.storeProdDemandMapper.insert(demand);
// 生产需求详情
@ -169,7 +171,7 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService
List<Long> demandDetailIdList = demandList.stream().map(StoreProdDemandPageResDTO::getStoreProdDemandDetailId).distinct().collect(Collectors.toList());
// 找到需求单抵扣的数据
List<StoreProductStorageDemandDeduct> deductList = this.storageDemandDeductMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDemandDeduct>()
.in(StoreProductStorageDemandDeduct::getStoreProdStorageDetailId, demandDetailIdList).eq(StoreProductStorageDemandDeduct::getDelFlag, "0"));
.in(StoreProductStorageDemandDeduct::getStoreProdStorageDetailId, demandDetailIdList).eq(StoreProductStorageDemandDeduct::getDelFlag, Constants.UNDELETED));
// 明细抵扣的数量
Map<Long, Integer> deductQuantityMap = CollectionUtils.isEmpty(deductList) ? new HashMap<>()
: deductList.stream().collect(Collectors.groupingBy(StoreProductStorageDemandDeduct::getStoreProdStorageDetailId, Collectors.summingInt(StoreProductStorageDemandDeduct::getQuantity)));

View File

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.page.Page;
import com.ruoyi.common.exception.ServiceException;
@ -21,6 +22,8 @@ import com.ruoyi.xkt.dto.storeProduct.*;
import com.ruoyi.xkt.dto.storeProductFile.StoreProdFileDTO;
import com.ruoyi.xkt.dto.storeProductFile.StoreProdFileResDTO;
import com.ruoyi.xkt.dto.storeProductFile.StoreProdMainPicDTO;
import com.ruoyi.xkt.enums.FileType;
import com.ruoyi.xkt.enums.ProductSizeStatus;
import com.ruoyi.xkt.mapper.*;
import com.ruoyi.xkt.service.IStoreProductService;
import lombok.RequiredArgsConstructor;
@ -66,7 +69,7 @@ public class StoreProductServiceImpl implements IStoreProductService {
@Transactional(readOnly = true)
public StoreProdResDTO selectStoreProductByStoreProdId(Long storeProdId) {
StoreProduct storeProd = Optional.ofNullable(this.storeProdMapper.selectOne(new LambdaQueryWrapper<StoreProduct>()
.eq(StoreProduct::getId, storeProdId).eq(StoreProduct::getDelFlag, "0")))
.eq(StoreProduct::getId, storeProdId).eq(StoreProduct::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口商品不存在!", HttpStatus.ERROR));
StoreProdResDTO storeProdResDTO = BeanUtil.toBean(storeProd, StoreProdResDTO.class).setStoreProdId(storeProd.getId());
// 档口文件(商品主图、主图视频、下载的商品详情)
@ -100,10 +103,10 @@ public class StoreProductServiceImpl implements IStoreProductService {
@Transactional(readOnly = true)
public StoreProdPicSpaceResDTO getStoreProductPicSpace(Long storeId) {
Store store = Optional.ofNullable(this.storeMapper.selectOne(new LambdaQueryWrapper<Store>()
.eq(Store::getId, storeId).eq(Store::getDelFlag, "0")))
.eq(Store::getId, storeId).eq(Store::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR));
return StoreProdPicSpaceResDTO.builder().storeId(storeId).storeName(store.getStoreName())
.fileList(this.storeProdFileMapper.selectPicSpaceList(storeId, "DOWNLOAD")).build();
.fileList(this.storeProdFileMapper.selectPicSpaceList(storeId, FileType.DOWNLOAD.getValue())).build();
}
/**
@ -137,12 +140,12 @@ public class StoreProductServiceImpl implements IStoreProductService {
// 提取查询结果中的商店产品ID列表
List<Long> storeProdIdList = prodList.stream().map(StoreProdPageResDTO::getStoreProdId).collect(Collectors.toList());
// 查找排名第一个商品主图列表
List<StoreProdMainPicDTO> mainPicList = this.storeProdFileMapper.selectMainPicByStoreProdIdList(storeProdIdList, "MAIN_PIC", 1);
List<StoreProdMainPicDTO> mainPicList = this.storeProdFileMapper.selectMainPicByStoreProdIdList(storeProdIdList, FileType.MAIN_PIC.getValue(), 1);
Map<Long, String> mainPicMap = CollectionUtils.isEmpty(mainPicList) ? new HashMap<>() : mainPicList.stream()
.collect(Collectors.toMap(StoreProdMainPicDTO::getStoreProdId, StoreProdMainPicDTO::getFileUrl));
// 查找档口商品的标准尺码
LambdaQueryWrapper<StoreProductColorSize> queryWrapper = new LambdaQueryWrapper<StoreProductColorSize>().in(StoreProductColorSize::getStoreProdId, storeProdIdList)
.eq(StoreProductColorSize::getDelFlag, "0").eq(StoreProductColorSize::getStandard, "1");
.eq(StoreProductColorSize::getDelFlag, Constants.UNDELETED).eq(StoreProductColorSize::getStandard, ProductSizeStatus.STANDARD.getValue());
List<StoreProductColorSize> standardSizeList = this.storeProdColorSizeMapper.selectList(queryWrapper);
// 将标准尺码列表转换为映射,以便后续处理
Map<Long, List<Integer>> standardSizeMap = CollectionUtils.isEmpty(standardSizeList) ? new HashMap<>() : standardSizeList.stream().collect(Collectors
@ -175,7 +178,7 @@ public class StoreProductServiceImpl implements IStoreProductService {
@Transactional
public int updateStoreProduct(final Long storeProdId, StoreProdDTO storeProdDTO) {
StoreProduct storeProd = Optional.ofNullable(this.storeProdMapper.selectOne(new LambdaQueryWrapper<StoreProduct>()
.eq(StoreProduct::getId, storeProdId).eq(StoreProduct::getDelFlag, "0")))
.eq(StoreProduct::getId, storeProdId).eq(StoreProduct::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口商品不存在!", HttpStatus.ERROR));
// 更新档口商品信息
BeanUtil.copyProperties(storeProdDTO, storeProd);
@ -268,7 +271,7 @@ public class StoreProductServiceImpl implements IStoreProductService {
public List<StoreProdFuzzyResDTO> fuzzyQueryList(Long storeId, String prodArtNum) {
// 初始化查询条件,确保查询的是指定商店且未删除的产品
LambdaQueryWrapper<StoreProduct> queryWrapper = new LambdaQueryWrapper<StoreProduct>()
.eq(StoreProduct::getStoreId, storeId).eq(StoreProduct::getDelFlag, "0");
.eq(StoreProduct::getStoreId, storeId).eq(StoreProduct::getDelFlag, Constants.UNDELETED);
// 如果产品货号非空,添加模糊查询条件
if (StringUtils.isNotBlank(prodArtNum)) {
queryWrapper.like(StoreProduct::getProdArtNum, prodArtNum);
@ -283,7 +286,7 @@ public class StoreProductServiceImpl implements IStoreProductService {
List<Long> storeProdIdList = storeProdList.stream().map(StoreProduct::getId).distinct().collect(Collectors.toList());
// 查询与产品ID列表关联的颜色信息
List<StoreProductColor> colorList = this.storeProdColorMapper.selectList(new LambdaQueryWrapper<StoreProductColor>()
.in(StoreProductColor::getStoreProdId, storeProdIdList).eq(StoreProductColor::getDelFlag, "0"));
.in(StoreProductColor::getStoreProdId, storeProdIdList).eq(StoreProductColor::getDelFlag, Constants.UNDELETED));
// 将颜色信息按产品ID分组并转换为所需的颜色DTO列表
Map<Long, List<StoreProdFuzzyResDTO.StoreProdFuzzyColorResDTO>> colorMap = CollectionUtils.isEmpty(colorList) ? new HashMap<>()
: colorList.stream().collect(Collectors.groupingBy(StoreProductColor::getStoreProdId, Collectors
@ -354,7 +357,7 @@ public class StoreProductServiceImpl implements IStoreProductService {
}
// 处理档口所有颜色列表
List<StoreColor> storeColorList = this.storeColorMapper.selectList(new LambdaQueryWrapper<StoreColor>()
.eq(StoreColor::getStoreId, storeProdDTO.getStoreId()).eq(StoreColor::getDelFlag, "0"));
.eq(StoreColor::getStoreId, storeProdDTO.getStoreId()).eq(StoreColor::getDelFlag, Constants.UNDELETED));
List<Long> dbStoreColorIdList = storeColorList.stream().map(StoreColor::getId).collect(Collectors.toList());
// 新增的颜色列表
List<StoreColor> addColorList =storeProdDTO.getAllColorList().stream().filter(x -> !dbStoreColorIdList.contains(x.getStoreColorId()))

View File

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.page.Page;
import com.ruoyi.common.exception.ServiceException;
@ -16,6 +17,7 @@ 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.StoreProdStockDTO;
import com.ruoyi.xkt.enums.FileType;
import com.ruoyi.xkt.mapper.StoreProductFileMapper;
import com.ruoyi.xkt.mapper.StoreProductStockMapper;
import com.ruoyi.xkt.mapper.SysFileMapper;
@ -56,7 +58,7 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService {
// 提取查询结果中的商店产品ID列表
List<Long> storeProdIdList = stockList.stream().map(StoreProdStockPageResDTO::getStoreProdId).collect(Collectors.toList());
// 查找排名第一个商品主图列表
List<StoreProdMainPicDTO> mainPicList = this.storeProdFileMapper.selectMainPicByStoreProdIdList(storeProdIdList, "MAIN_PIC", 1);
List<StoreProdMainPicDTO> mainPicList = this.storeProdFileMapper.selectMainPicByStoreProdIdList(storeProdIdList, FileType.MAIN_PIC.getValue(), 1);
Map<Long, String> mainPicMap = CollectionUtils.isEmpty(mainPicList) ? new HashMap<>() : mainPicList.stream()
.collect(Collectors.toMap(StoreProdMainPicDTO::getStoreProdId, StoreProdMainPicDTO::getFileUrl));
// 为每个产品设置主图URL和标准尺码列表
@ -76,7 +78,7 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService {
public List<StoreProdStockResDTO> selectByStoreIdAndProdArtNum(Long storeId, String prodArtNum) {
List<StoreProductStock> stockList = this.storeProdStockMapper.selectList(new LambdaQueryWrapper<StoreProductStock>()
.eq(StoreProductStock::getStoreId, storeId).eq(StoreProductStock::getProdArtNum, prodArtNum)
.eq(StoreProductStock::getDelFlag, "0"));
.eq(StoreProductStock::getDelFlag, Constants.UNDELETED));
return CollectionUtils.isEmpty(stockList) ? new ArrayList<>()
: stockList.stream().map(x -> BeanUtil.toBean(x, StoreProdStockResDTO.class).setStoreProdStockId(x.getId())).collect(Collectors.toList());
}
@ -93,7 +95,7 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService {
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")
.eq(StoreProductStock::getStoreId, storeId).eq(StoreProductStock::getDelFlag, Constants.UNDELETED)
.in(StoreProductStock::getStoreProdId, increaseStockList.stream().map(StoreProdStockDTO::getStoreProdId).collect(Collectors.toList()))
.in(StoreProductStock::getStoreProdColorId, increaseStockList.stream().map(StoreProdStockDTO::getStoreProdColorId).collect(Collectors.toList())));
// 已存在的档口商品颜色库存map
@ -121,7 +123,7 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService {
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")
.eq(StoreProductStock::getStoreId, storeId).eq(StoreProductStock::getDelFlag, Constants.UNDELETED)
.in(StoreProductStock::getStoreProdId, decreaseStockList.stream().map(StoreProdStockDTO::getStoreProdId).collect(Collectors.toList()))
.in(StoreProductStock::getStoreProdColorId, decreaseStockList.stream().map(StoreProdStockDTO::getStoreProdColorId).collect(Collectors.toList())));
// 待扣减的库存map
@ -142,7 +144,7 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService {
@Transactional
public int clearStockToZero(Long storeId, Long storeProdStockId) {
StoreProductStock stock = Optional.ofNullable(this.storeProdStockMapper.selectOne(new LambdaQueryWrapper<StoreProductStock>()
.eq(StoreProductStock::getId, storeProdStockId).eq(StoreProductStock::getStoreId, storeId).eq(StoreProductStock::getDelFlag, "0")))
.eq(StoreProductStock::getId, storeProdStockId).eq(StoreProductStock::getStoreId, storeId).eq(StoreProductStock::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口商品库存不存在!", HttpStatus.ERROR));
stock.setSize30(0).setSize31(0).setSize32(0).setSize33(0).setSize34(0).setSize35(0).setSize36(0).setSize37(0)
.setSize38(0).setSize39(0).setSize40(0).setSize41(0).setSize42(0).setSize43(0);
@ -164,7 +166,7 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService {
List<StoreProductStock> stockList = Optional.ofNullable(this.storeProdStockMapper.selectList(new LambdaQueryWrapper<StoreProductStock>()
.in(StoreProductStock::getStoreProdId, updateStockList.stream().map(StoreProdStockDTO::getStoreProdId).collect(Collectors.toList()))
.eq(StoreProductStock::getStoreId, storeId)
.eq(StoreProductStock::getDelFlag, "0")))
.eq(StoreProductStock::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口商品库存不存在!", HttpStatus.ERROR));
// 数据库数据map
Map<String, StoreProdStockDTO> diffStockMap = updateStockList.stream().collect(Collectors
@ -236,17 +238,17 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService {
public StoreProdStockResDTO selectByStoreProdStockId(Long storeId, Long storeProdStockId) {
StoreProductStock stock = Optional.ofNullable(this.storeProdStockMapper.selectOne(new LambdaQueryWrapper<StoreProductStock>()
.eq(StoreProductStock::getId, storeProdStockId).eq(StoreProductStock::getStoreId, storeId)
.eq(StoreProductStock::getDelFlag, "0")))
.eq(StoreProductStock::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口商品库存不存在!", HttpStatus.ERROR));
// 档口商品第一张主图
StoreProductFile mainPic = Optional.ofNullable(this.storeProdFileMapper.selectOne(new LambdaQueryWrapper<StoreProductFile>()
.eq(StoreProductFile::getStoreProdId, stock.getStoreProdId()).eq(StoreProductFile::getStoreId, storeId)
.eq(StoreProductFile::getDelFlag, "0").eq(StoreProductFile::getFileType, "MAIN_PIC")
.eq(StoreProductFile::getDelFlag, Constants.UNDELETED).eq(StoreProductFile::getFileType, FileType.MAIN_PIC.getValue())
.eq(StoreProductFile::getOrderNum, 1)))
.orElseThrow(() -> new ServiceException("商品主图不存在!", HttpStatus.ERROR));
// 图片
SysFile file = Optional.ofNullable(this.fileMapper.selectOne(new LambdaQueryWrapper<SysFile>()
.eq(SysFile::getId, mainPic.getFileId()).eq(SysFile::getDelFlag, "0")))
.eq(SysFile::getId, mainPic.getFileId()).eq(SysFile::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("商品主图不存在!", HttpStatus.ERROR));
return BeanUtil.toBean(stock, StoreProdStockResDTO.class)
.setStoreProdStockId(stock.getId()).setMainPicUrl(file.getFileUrl());

View File

@ -21,6 +21,7 @@ import com.ruoyi.xkt.dto.storeProdStorage.StoreProdStoragePageResDTO;
import com.ruoyi.xkt.dto.storeProdStorage.StoreProdStorageResDTO;
import com.ruoyi.xkt.dto.storeProductDemand.StoreProdDemandSimpleDTO;
import com.ruoyi.xkt.dto.storeProductStock.StoreProdStockDTO;
import com.ruoyi.xkt.enums.EVoucherSequenceType;
import com.ruoyi.xkt.mapper.*;
import com.ruoyi.xkt.service.IStoreProductStockService;
import com.ruoyi.xkt.service.IStoreProductStorageService;
@ -80,7 +81,7 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi
@Transactional
public int create(StoreProdStorageDTO storeProdStorageDTO) {
// 生成code
String code = this.sequenceService.generateCode(storeProdStorageDTO.getStoreId(), "STORAGE", DateUtils.parseDateToStr(DateUtils.YYYYMMDD, new Date()));
String code = this.sequenceService.generateCode(storeProdStorageDTO.getStoreId(), EVoucherSequenceType.STORAGE.getValue(), DateUtils.parseDateToStr(DateUtils.YYYYMMDD, new Date()));
// 总的数量
Integer totalNum = storeProdStorageDTO.getDetailList().stream().map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
// 总的金额
@ -102,7 +103,7 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi
// 根据明细列表找到所有提交的需求
List<StoreProductDemandDetail> demandDetailList = this.demandDetailMapper.selectList(new LambdaQueryWrapper<StoreProductDemandDetail>()
.eq(StoreProductDemandDetail::getStoreId, storeProdStorageDTO.getStoreId()).eq(StoreProductDemandDetail::getDelFlag, "0")
.eq(StoreProductDemandDetail::getStoreId, storeProdStorageDTO.getStoreId()).eq(StoreProductDemandDetail::getDelFlag, Constants.UNDELETED)
.in(StoreProductDemandDetail::getDetailStatus, Arrays.asList(1, 2))
.in(StoreProductDemandDetail::getStoreProdColorId, detailList.stream().map(StoreProductStorageDetail::getStoreProdColorId).collect(Collectors.toList())));
// 若没有任何需求则不抵扣,直接结束流程
@ -110,10 +111,10 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi
return count;
}
// 所有的需求单ID列表
final List<Long> demandIdList = demandDetailList.stream().map(StoreProductDemandDetail::getStoreProdDemandId).distinct().collect(Collectors.toList());
final List<Long> demandIdList = demandDetailList.stream().map(StoreProductDemandDetail::getStoreProdDemandId).distinct().collect(Collectors.toList());
List<StoreProductStorageDemandDeductNew> deductedNewList = this.deductNewMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDemandDeductNew>()
.in(StoreProductStorageDemandDeductNew::getStoreProdColorId, detailList.stream().map(StoreProductStorageDetail::getStoreProdColorId).collect(Collectors.toList()))
.eq(StoreProductStorageDemandDeductNew::getDelFlag, "0"));
.eq(StoreProductStorageDemandDeductNew::getDelFlag, Constants.UNDELETED));
// 已存在的需求抵扣明细列表
Map<Long, Map<Integer, Integer>> deductedExistsMap = deductedNewList.stream().collect(Collectors.groupingBy(StoreProductStorageDemandDeductNew::getStoreProdColorId,
Collectors.groupingBy(StoreProductStorageDemandDeductNew::getSize, Collectors.summingInt(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)))));
@ -271,7 +272,7 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi
sizeStorageMap.put(43, storageDetail.getSize43());
}
if (MapUtils.isNotEmpty(sizeStorageMap)) {
storageQuantityMap.put(storageDetail.getStoreProdColorId(), new LinkedHashMap<Long, Map<Integer, Integer>>(){{
storageQuantityMap.put(storageDetail.getStoreProdColorId(), new LinkedHashMap<Long, Map<Integer, Integer>>() {{
put(storageDetail.getId(), sizeStorageMap);
}});
}
@ -336,7 +337,7 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi
}
List<StoreProdDemandSimpleDTO> demandSimpleList = Optional.ofNullable(this.demandDetailMapper.selectDemandCodeList(demandDetailList.stream()
.map(StoreProductDemandDetail::getId).distinct().collect(Collectors.toList())))
.map(StoreProductDemandDetail::getId).distinct().collect(Collectors.toList())))
.orElseThrow(() -> new ServiceException("获取需求单号失败", HttpStatus.ERROR));
// demandDetailId 与 demandCode 的映射关系
Map<Long, String> demandCodeMap = demandSimpleList.stream().collect(Collectors.toMap(StoreProdDemandSimpleDTO::getStoreProdDemandDetailId, StoreProdDemandSimpleDTO::getCode));
@ -365,7 +366,7 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi
this.deductNewMapper.insert(deductList);
List<StoreProductStorageDemandDeductNew> listAfterInsert = this.deductNewMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDemandDeductNew>()
.eq(StoreProductStorageDemandDeductNew::getDelFlag, "0").in(StoreProductStorageDemandDeductNew::getStoreProdDemandDetailId, updateDetailIdList));
.eq(StoreProductStorageDemandDeductNew::getDelFlag, Constants.UNDELETED).in(StoreProductStorageDemandDeductNew::getStoreProdDemandDetailId, updateDetailIdList));
if (CollectionUtils.isEmpty(listAfterInsert)) {
return count;
}
@ -405,10 +406,10 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi
});
// 筛选出所有和本次需求单抵扣有关的需求单列表
List<StoreProductDemandDetail> updateDemandDetailList = Optional.ofNullable(this.demandDetailMapper.selectList(new LambdaQueryWrapper<StoreProductDemandDetail>()
.in(StoreProductDemandDetail::getStoreProdDemandId, demandIdList).eq(StoreProductDemandDetail::getDelFlag, "0")))
.in(StoreProductDemandDetail::getStoreProdDemandId, demandIdList).eq(StoreProductDemandDetail::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("获取需求单明细失败", HttpStatus.ERROR));
// 依次对比需求单明细不同size的完成数量并更新需求单明细的detailStatus
List<StoreProductDemandDetail> demandDetailListAfterUpdate = updateDemandDetailList.stream().map(updateDetail -> {
List<StoreProductDemandDetail> demandDetailListAfterUpdate = updateDemandDetailList.stream().map(updateDetail -> {
Map<Integer, Integer> latestSizeQuantityMap = latestDeductSizeQuantityMap.get(updateDetail.getId());
if (MapUtils.isEmpty(latestSizeQuantityMap)) {
return updateDetail;
@ -448,7 +449,6 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi
}
/**
*
*
@ -460,11 +460,11 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi
public StoreProdStorageResDTO selectByStoreProdStorId(Long storeProdStorId) {
// 档口商品入库
StoreProductStorage storage = Optional.ofNullable(this.storageMapper.selectOne(new LambdaQueryWrapper<StoreProductStorage>()
.eq(StoreProductStorage::getId, storeProdStorId).eq(StoreProductStorage::getDelFlag, "0")))
.eq(StoreProductStorage::getId, storeProdStorId).eq(StoreProductStorage::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口商品入库不存在!", HttpStatus.ERROR));
// 档口商品入库明细
List<StoreProductStorageDetail> storageDetailList = storageDetailMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDetail>()
.eq(StoreProductStorageDetail::getStoreProdStorId, storeProdStorId).eq(StoreProductStorageDetail::getDelFlag, "0"));
.eq(StoreProductStorageDetail::getStoreProdStorId, storeProdStorId).eq(StoreProductStorageDetail::getDelFlag, Constants.UNDELETED));
return BeanUtil.toBean(storage, StoreProdStorageResDTO.class)
.setDetailList(storageDetailList.stream().map(x -> BeanUtil.toBean(x, StoreProdStorageResDTO.StorageDetailDTO.class)).collect(Collectors.toList()));
}
@ -481,14 +481,14 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi
public int deleteByStoreProdStorId(Long storeProdStorId) {
// 档口商品入库
StoreProductStorage storage = Optional.ofNullable(this.storageMapper.selectOne(new LambdaQueryWrapper<StoreProductStorage>()
.eq(StoreProductStorage::getId, storeProdStorId).eq(StoreProductStorage::getDelFlag, "0")))
.eq(StoreProductStorage::getId, storeProdStorId).eq(StoreProductStorage::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口商品入库不存在!", HttpStatus.ERROR));
storage.setDelFlag("2");
storage.setDelFlag(Constants.DELETED);
int count = this.storageMapper.updateById(storage);
// 档口商品入库明细
List<StoreProductStorageDetail> storageDetailList = storageDetailMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDetail>()
.eq(StoreProductStorageDetail::getStoreProdStorId, storeProdStorId).eq(StoreProductStorageDetail::getDelFlag, "0"));
storageDetailList.forEach(x -> x.setDelFlag("2"));
.eq(StoreProductStorageDetail::getStoreProdStorId, storeProdStorId).eq(StoreProductStorageDetail::getDelFlag, Constants.UNDELETED));
storageDetailList.forEach(x -> x.setDelFlag(Constants.DELETED));
this.storageDetailMapper.updateById(storageDetailList);
// 减少档口商品库存
this.stockService.decreaseStock(storage.getStoreId(), storageDetailList.stream()
@ -736,89 +736,4 @@ public class StoreProductStorageServiceImpl implements IStoreProductStorageServi
}
/* // 找到入库需求抵扣明细中间表,查看哪些是已经抵扣了的
List<StoreProductStorageDemandDeduct> deductedList = this.deductMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDemandDeduct>()
.in(StoreProductStorageDemandDeduct::getStoreProdDemandDetailId, detailList.stream().map(StoreProductStorageDetail::getId).collect(Collectors.toList())));
Map<Long, List<StoreProductStorageDemandDeduct>> deductedQuantityMap = deductedList.stream().collect(Collectors.groupingBy(StoreProductStorageDemandDeduct::getStoreProdDemandDetailId));
// 存货每一个货品颜色,不同尺码已抵扣数量
Map<Long, Map<Integer, Integer>> deductedDetailMap = new HashMap<>();
deductedQuantityMap.forEach((prodColorId, deductList) -> {
Map<Integer, Integer> sizeDeductedMap = new HashMap<>();
Integer size30Quantity = deductList.stream().map(StoreProductStorageDemandDeduct::getSize30).filter(size30 -> ObjectUtils.defaultIfNull(size30, 0) > 0).reduce(0, Integer::sum);
sizeDeductedMap.put(30, size30Quantity);
Integer size31Quantity = deductList.stream().map(StoreProductStorageDemandDeduct::getSize31).filter(size31 -> ObjectUtils.defaultIfNull(size31, 0) > 0).reduce(0, Integer::sum);
sizeDeductedMap.put(31, size31Quantity);
Integer size32Quantity = deductList.stream().map(StoreProductStorageDemandDeduct::getSize32).filter(size32 -> ObjectUtils.defaultIfNull(size32, 0) > 0).reduce(0, Integer::sum);
sizeDeductedMap.put(32, size32Quantity);
Integer size33Quantity = deductList.stream().map(StoreProductStorageDemandDeduct::getSize33).filter(size33 -> ObjectUtils.defaultIfNull(size33, 0) > 0).reduce(0, Integer::sum);
sizeDeductedMap.put(33, size33Quantity);
Integer size34Quantity = deductList.stream().map(StoreProductStorageDemandDeduct::getSize34).filter(size34 -> ObjectUtils.defaultIfNull(size34, 0) > 0).reduce(0, Integer::sum);
sizeDeductedMap.put(34, size34Quantity);
Integer size35Quantity = deductList.stream().map(StoreProductStorageDemandDeduct::getSize35).filter(size35 -> ObjectUtils.defaultIfNull(size35, 0) > 0).reduce(0, Integer::sum);
sizeDeductedMap.put(35, size35Quantity);
Integer size36Quantity = deductList.stream().map(StoreProductStorageDemandDeduct::getSize36).filter(size36 -> ObjectUtils.defaultIfNull(size36, 0) > 0).reduce(0, Integer::sum);
sizeDeductedMap.put(36, size36Quantity);
Integer size37Quantity = deductList.stream().map(StoreProductStorageDemandDeduct::getSize37).filter(size37 -> ObjectUtils.defaultIfNull(size37, 0) > 0).reduce(0, Integer::sum);
sizeDeductedMap.put(37, size37Quantity);
Integer size38Quantity = deductList.stream().map(StoreProductStorageDemandDeduct::getSize38).filter(size38 -> ObjectUtils.defaultIfNull(size38, 0) > 0).reduce(0, Integer::sum);
sizeDeductedMap.put(38, size38Quantity);
Integer size39Quantity = deductList.stream().map(StoreProductStorageDemandDeduct::getSize39).filter(size39 -> ObjectUtils.defaultIfNull(size39, 0) > 0).reduce(0, Integer::sum);
sizeDeductedMap.put(39, size39Quantity);
Integer size40Quantity = deductList.stream().map(StoreProductStorageDemandDeduct::getSize40).filter(size40 -> ObjectUtils.defaultIfNull(size40, 0) > 0).reduce(0, Integer::sum);
sizeDeductedMap.put(40, size40Quantity);
Integer size41Quantity = deductList.stream().map(StoreProductStorageDemandDeduct::getSize41).filter(size41 -> ObjectUtils.defaultIfNull(size41, 0) > 0).reduce(0, Integer::sum);
sizeDeductedMap.put(41, size41Quantity);
Integer size42Quantity = deductList.stream().map(StoreProductStorageDemandDeduct::getSize42).filter(size42 -> ObjectUtils.defaultIfNull(size42, 0) > 0).reduce(0, Integer::sum);
sizeDeductedMap.put(42, size42Quantity);
Integer size43Quantity = deductList.stream().map(StoreProductStorageDemandDeduct::getSize43).filter(size43 -> ObjectUtils.defaultIfNull(size43, 0) > 0).reduce(0, Integer::sum);
sizeDeductedMap.put(43, size43Quantity);
deductedDetailMap.put(prodColorId, sizeDeductedMap);
});
*/
/*
// 拷贝一份需求明细列表,避免修改原集合,避免数据污染
List<StoreProductDemandDetail> copyDemandDetailList = new ArrayList<>(demandDetailList);
// 如果有档口生产需求订单,则直接抵扣
Map<Long, List<StoreProductDemandDetail>> demandDetailMap = copyDemandDetailList.stream().collect(Collectors.groupingBy(StoreProductDemandDetail::getStoreProdColorId));
// 先按照需求明细的每个尺码处理,将入库的数据插入到抵扣需求明细表中,然后再将需求的对应的中间表数据筛选出来,依次对比需求单明细的状态,如果状态都为: 3 生产完成,则更新生产需求单 整体状态
// 拷贝一份入库明细列表,避免修改原集合,避免数据污染
List<StoreProductStorageDetail> tempCopyList = new ArrayList<>(detailList);
List<StoreProductStorageDemandDeduct> targetList = new ArrayList<>();
tempCopyList.forEach(storageDetail -> {
List<StoreProductDemandDetail> targetDemandList = demandDetailMap.get(storageDetail.getStoreProdColorId());
if (CollectionUtils.isEmpty(targetDemandList)) {
return;
}
// 抵扣规则1.优先按照生产中2、待生产1 排序 2. 再按照需求创建时间升序排列
targetDemandList = targetDemandList.stream().sorted(Comparator.comparing(StoreProductDemandDetail::getDetailStatus).reversed()
.thenComparing(StoreProductDemandDetail::getCreateTime)).collect(Collectors.toList());
// 可能存在需求单没抵扣完,抵扣了部分,这个如何提现出来????
// 可能出现的情况 生产数量小于需求数量 生产数量等于需求数量 生产数量大于需求数量
// 依次抵扣需求单数量,如果还有多的则继续抵扣,如果没有则结束循环
// 还要更改需求单的需求状态
});*/
}

View File

@ -2,6 +2,7 @@ package com.ruoyi.xkt.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.xkt.domain.StoreQuickFunction;
import com.ruoyi.xkt.dto.storeQuickFunction.StoreQuickFuncDTO;
@ -31,7 +32,7 @@ public class StoreQuickFunctionServiceImpl implements IStoreQuickFunctionService
@Transactional(readOnly = true)
public List<StoreQuickFuncDTO.DetailDTO> getCheckedMenuList(Long storeId) {
List<StoreQuickFunction> storeQuickFuncList = storeQuickFuncMapper.selectList(new LambdaQueryWrapper<StoreQuickFunction>()
.eq(StoreQuickFunction::getStoreId,storeId).eq(StoreQuickFunction::getDelFlag,"0"));
.eq(StoreQuickFunction::getStoreId,storeId).eq(StoreQuickFunction::getDelFlag, Constants.UNDELETED));
return CollectionUtils.isEmpty(storeQuickFuncList) ? new ArrayList<>() : BeanUtil.copyToList(storeQuickFuncList, StoreQuickFuncDTO.DetailDTO.class);
}

View File

@ -2,6 +2,7 @@ package com.ruoyi.xkt.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.xkt.domain.StoreSale;
@ -45,7 +46,7 @@ public class StoreSaleRefundRecordServiceImpl implements IStoreSaleRefundRecordS
@Transactional(readOnly = true)
public List<StoreSaleRefundRecordDTO> selectList(Long storeId, Long storeSaleId) {
List<StoreSaleRefundRecord> refundRecordList = this.refundRecordMapper.selectList(new LambdaQueryWrapper<StoreSaleRefundRecord>()
.eq(StoreSaleRefundRecord::getStoreId, storeId).eq(StoreSaleRefundRecord::getStoreSaleId, storeSaleId).eq(StoreSaleRefundRecord::getDelFlag, "0"));
.eq(StoreSaleRefundRecord::getStoreId, storeId).eq(StoreSaleRefundRecord::getStoreSaleId, storeSaleId).eq(StoreSaleRefundRecord::getDelFlag, Constants.UNDELETED));
if (CollectionUtils.isEmpty(refundRecordList)) {
return new ArrayList<>();
}

View File

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.page.Page;
@ -17,6 +18,8 @@ import com.ruoyi.xkt.dto.storeSale.StoreSaleDTO;
import com.ruoyi.xkt.dto.storeSale.StoreSalePageDTO;
import com.ruoyi.xkt.dto.storeSale.StoreSalePageResDTO;
import com.ruoyi.xkt.dto.storeSale.StoreSalePayStatusDTO;
import com.ruoyi.xkt.enums.EVoucherSequenceType;
import com.ruoyi.xkt.enums.PaymentStatus;
import com.ruoyi.xkt.mapper.*;
import com.ruoyi.xkt.service.IStoreProductStockService;
import com.ruoyi.xkt.service.IStoreSaleService;
@ -64,7 +67,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
@Transactional(readOnly = true)
public StoreCusGeneralSaleDTO getCusGeneralSale(Integer days, Long storeId, Long storeCusId) {
StoreCustomer storeCus = Optional.ofNullable(this.storeCusMapper.selectOne(new LambdaQueryWrapper<StoreCustomer>()
.eq(StoreCustomer::getId, storeCusId).eq(StoreCustomer::getDelFlag, "0")))
.eq(StoreCustomer::getId, storeCusId).eq(StoreCustomer::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口客户不存在!", HttpStatus.ERROR));
// 当前时间
Date nowDate = Date.from(LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant());
@ -73,7 +76,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
// 查询当前档口客户在这段时间内的销售业绩情况
List<StoreSale> saleList = this.storeSaleMapper.selectList(new LambdaQueryWrapper<StoreSale>()
.eq(StoreSale::getStoreId, storeId).eq(StoreSale::getStoreCusId, storeCusId)
.eq(StoreSale::getDelFlag, "0").between(StoreSale::getVoucherDate, pastDate, nowDate));
.eq(StoreSale::getDelFlag, Constants.UNDELETED).between(StoreSale::getVoucherDate, pastDate, nowDate));
// 初始化返回对象
StoreCusGeneralSaleDTO generalSaleDTO = StoreCusGeneralSaleDTO.builder().storeId(storeId).storeCusId(storeCusId)
.storeCusName(storeCus.getCusName()).saleAmount(BigDecimal.ZERO).debtAmount(BigDecimal.ZERO)
@ -86,7 +89,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
// 总的销售数量
Long saleCount = saleList.stream().map(x -> x.getQuantity() == null ? 0L : x.getQuantity()).reduce(0L, Long::sum);
// 总的欠款金额
BigDecimal debtAmount = saleList.stream().filter(x -> Objects.equals(x.getPaymentStatus(), "DEBT"))
BigDecimal debtAmount = saleList.stream().filter(x -> Objects.equals(x.getPaymentStatus(), PaymentStatus.DEBT.getValue()))
.map(x -> ObjectUtils.defaultIfNull(x.getAmount(), BigDecimal.ZERO)).reduce(BigDecimal.ZERO, BigDecimal::add);
return generalSaleDTO.setSaleAmount(saleAmount).setSaleCount(saleCount).setDebtAmount(debtAmount);
}
@ -115,14 +118,14 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
@Transactional
public void clearStoreCusDebt(StoreSalePayStatusDTO payStatusDTO) {
List<StoreSale> storeSaleList = Optional.ofNullable(this.storeSaleMapper.selectList(new LambdaQueryWrapper<StoreSale>()
.in(StoreSale::getId, payStatusDTO.getStoreSaleIdList()).eq(StoreSale::getDelFlag, "0")))
.in(StoreSale::getId, payStatusDTO.getStoreSaleIdList()).eq(StoreSale::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("没有找到对应的销售出库单!", HttpStatus.ERROR));
// 勾选订单是否有已结算的
List<StoreSale> settledList = storeSaleList.stream().filter(x -> Objects.equals(x.getPaymentStatus(), "SETTLED")).collect(Collectors.toList());
List<StoreSale> settledList = storeSaleList.stream().filter(x -> Objects.equals(x.getPaymentStatus(), PaymentStatus.SETTLED.getValue())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(settledList)) {
throw new ServiceException("当前订单已结算!" + settledList.stream().map(StoreSale::getCode).collect(Collectors.toList()), HttpStatus.ERROR);
}
storeSaleList.forEach(x -> x.setPaymentStatus("SETTLED"));
storeSaleList.forEach(x -> x.setPaymentStatus(PaymentStatus.SETTLED.getValue()));
this.storeSaleMapper.updateById(storeSaleList);
}
@ -137,7 +140,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
public int insertStoreSale(StoreSaleDTO storeSaleDTO) {
StoreSale storeSale = BeanUtil.toBean(storeSaleDTO, StoreSale.class);
// 生成code
String code = this.sequenceService.generateCode(storeSaleDTO.getStoreId(), "STORE_SALE", DateUtils.parseDateToStr(DateUtils.YYYYMMDD, new Date()));
String code = this.sequenceService.generateCode(storeSaleDTO.getStoreId(), EVoucherSequenceType.STORE_SALE.getValue(), DateUtils.parseDateToStr(DateUtils.YYYYMMDD, new Date()));
// 总的数量
Integer quantity = storeSaleDTO.getDetailList().stream().map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
// 总的金额
@ -176,11 +179,11 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
// 当前登录用户
LoginUser loginUser = SecurityUtils.getLoginUser();
StoreSale storeSale = Optional.ofNullable(this.storeSaleMapper.selectOne(new LambdaQueryWrapper<StoreSale>()
.eq(StoreSale::getId, storeSaleDTO.getStoreSaleId()).eq(StoreSale::getDelFlag, "0")))
.eq(StoreSale::getId, storeSaleDTO.getStoreSaleId()).eq(StoreSale::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口销售出库订单不存在!", HttpStatus.ERROR));
// 档口销售出库明细列表
List<StoreSaleDetail> saleDetailList = this.storeSaleDetailMapper.selectList(new LambdaQueryWrapper<StoreSaleDetail>()
.eq(StoreSaleDetail::getStoreSaleId, storeSaleDTO.getStoreSaleId()).eq(StoreSaleDetail::getDelFlag, "0"));
.eq(StoreSaleDetail::getStoreSaleId, storeSaleDTO.getStoreSaleId()).eq(StoreSaleDetail::getDelFlag, Constants.UNDELETED));
// 若为返单,则将之前数据记录到返单记录表中
if (Objects.equals(storeSaleDTO.getRefund(), Boolean.TRUE)) {
// 订单记录到StoreSaleRefundRecord
@ -201,7 +204,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
int count = this.storeSaleMapper.updateById(storeSale.setQuantity(quantity).setAmount(amount)
.setOperatorId(loginUser.getUserId()).setOperatorName(loginUser.getUsername()));
// 先将所有明细置为无效,再新增
this.storeSaleDetailMapper.updateById(saleDetailList.stream().peek(x -> x.setDelFlag("2")).collect(Collectors.toList()));
this.storeSaleDetailMapper.updateById(saleDetailList.stream().peek(x -> x.setDelFlag(Constants.DELETED)).collect(Collectors.toList()));
// 再新增档口销售出库明细数据
List<StoreSaleDetail> detailList = storeSaleDTO.getDetailList().stream().map(x -> BeanUtil.toBean(x, StoreSaleDetail.class)
.setSaleType(storeSaleDTO.getSaleType()).setStoreSaleId(storeSale.getId())).collect(Collectors.toList());
@ -230,12 +233,12 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
@Transactional(readOnly = true)
public StoreSaleDTO selectStoreSaleByStoreSaleId(Long storeSaleId) {
StoreSale storeSale = Optional.ofNullable(this.storeSaleMapper.selectOne(new LambdaQueryWrapper<StoreSale>()
.eq(StoreSale::getId, storeSaleId).eq(StoreSale::getDelFlag, "0")))
.eq(StoreSale::getId, storeSaleId).eq(StoreSale::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口销售出库订单不存在!", HttpStatus.ERROR));
StoreSaleDTO storeSaleDTO = BeanUtil.toBean(storeSale, StoreSaleDTO.class);
// 查询销售出库明细
List<StoreSaleDetail> saleDetailList = this.storeSaleDetailMapper.selectList(new LambdaQueryWrapper<StoreSaleDetail>()
.eq(StoreSaleDetail::getStoreSaleId, storeSaleId).eq(StoreSaleDetail::getDelFlag, "0"));
.eq(StoreSaleDetail::getStoreSaleId, storeSaleId).eq(StoreSaleDetail::getDelFlag, Constants.UNDELETED));
storeSaleDTO.setDetailList(saleDetailList.stream().map(x -> BeanUtil.toBean(x, StoreSaleDTO.SaleDetailVO.class)).collect(Collectors.toList()));
return storeSaleDTO;
}
@ -251,14 +254,14 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
public int deleteStoreSaleByStoreSaleId(Long storeSaleId) {
// 删除档口销售出库数据
StoreSale storeSale = Optional.ofNullable(this.storeSaleMapper.selectOne(new LambdaQueryWrapper<StoreSale>()
.eq(StoreSale::getId, storeSaleId).eq(StoreSale::getDelFlag, "0")))
.eq(StoreSale::getId, storeSaleId).eq(StoreSale::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口销售出库订单不存在!", HttpStatus.ERROR));
storeSale.setDelFlag("2");
storeSale.setDelFlag(Constants.DELETED);
int count = this.storeSaleMapper.updateById(storeSale);
// 删除档口销售出库明细数据
List<StoreSaleDetail> saleDetailList = this.storeSaleDetailMapper.selectList(new LambdaQueryWrapper<StoreSaleDetail>()
.eq(StoreSaleDetail::getStoreSaleId, storeSaleId).eq(StoreSaleDetail::getDelFlag, "0"));
this.storeSaleDetailMapper.updateById(saleDetailList.stream().peek(x -> x.setDelFlag("2")).collect(Collectors.toList()));
.eq(StoreSaleDetail::getStoreSaleId, storeSaleId).eq(StoreSaleDetail::getDelFlag, Constants.UNDELETED));
this.storeSaleDetailMapper.updateById(saleDetailList.stream().peek(x -> x.setDelFlag(Constants.DELETED)).collect(Collectors.toList()));
// 先汇总当前这笔订单商品明细的销售数量,包括销售及退货 key prodArtNum + storeProdId + storeProdColorId + colorName, value: map(key:size,value:count)
Map<String, Map<Integer, Integer>> saleCountMap = saleDetailList.stream().collect(Collectors
.groupingBy(x -> x.getProdArtNum() + ":" + x.getStoreProdId() + ":" + x.getStoreProdColorId() + ":" + x.getColorName(), Collectors