diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductColorSizeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductColorSizeController.java index 2985f4f98..2ae2256a8 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductColorSizeController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductColorSizeController.java @@ -1,6 +1,23 @@ package com.ruoyi.web.controller.xkt; +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.XktBaseController; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.web.controller.xkt.vo.storeProdColorSize.StoreSaleSnResVO; +import com.ruoyi.web.controller.xkt.vo.storeProdColorSize.StoreProdSnVO; +import com.ruoyi.web.controller.xkt.vo.storeProdColorSize.StoreSaleSnVO; +import com.ruoyi.xkt.dto.storeProdColorSize.StoreProdSnDTO; +import com.ruoyi.xkt.dto.storeProdColorSize.StoreSaleSnDTO; +import com.ruoyi.xkt.service.IStoreProductColorSizeService; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -10,8 +27,40 @@ import org.springframework.web.bind.annotation.RestController; * @author ruoyi * @date 2025-03-26 */ +@ApiModel(value = "商品条码处理") @RestController +@RequiredArgsConstructor @RequestMapping("/rest/v1/prod-color-sizes") public class StoreProductColorSizeController extends XktBaseController { + final IStoreProductColorSizeService prodColorSizeService; + + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()") + @Log(title = "[销售出库]根据条码查询商品信息", businessType = BusinessType.INSERT) + @ApiOperation(value = "[销售出库]根据条码查询商品信息", httpMethod = "POST", response = R.class) + @PostMapping("/sn/store-sale") + public R storeSaleSn(@Validated @RequestBody StoreSaleSnVO snVO) { + return R.ok(BeanUtil.toBean(prodColorSizeService.storeSaleSn(BeanUtil.toBean(snVO, StoreSaleSnDTO.class)), StoreSaleSnResVO.class)); + } + + @PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()") + @Log(title = "[商品入库、库存盘点]根据条码查询商品信息", businessType = BusinessType.INSERT) + @ApiOperation(value = "[商品入库、库存盘点]根据条码查询商品信息", httpMethod = "POST", response = R.class) + @PostMapping("/sn") + public R sn(@Validated @RequestBody StoreProdSnVO snVO) { + return R.ok(BeanUtil.toBean(prodColorSizeService.sn(BeanUtil.toBean(snVO, StoreProdSnDTO.class)), StoreSaleSnResVO.class)); + } + + + + + // TODO 档口扫描货号,获取商品信息 + // TODO 档口扫描货号,获取商品信息 + // TODO 档口扫描货号,获取商品信息 + + + // TODO 打印条码 + // TODO 打印条码 + // TODO 打印条码 + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreSaleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreSaleController.java index 4a4d357df..1f9d4bdda 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreSaleController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreSaleController.java @@ -39,12 +39,6 @@ public class StoreSaleController extends XktBaseController { final IStoreSaleService storeSaleService; - - // TODO 提醒杰、销售明细 增加 支付方式显示 - // TODO 提醒杰、销售明细 增加 支付方式显示 - // TODO 提醒杰、销售明细 增加 支付方式显示 - - @PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()") @ApiOperation(value = "根据当前客户查询最近的销售业绩,以及欠款金额", httpMethod = "GET", response = R.class) @GetMapping("/cus-overall") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdColorSize/StoreProdSnResVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdColorSize/StoreProdSnResVO.java new file mode 100644 index 000000000..6377be4f3 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdColorSize/StoreProdSnResVO.java @@ -0,0 +1,44 @@ +package com.ruoyi.web.controller.xkt.vo.storeProdColorSize; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StoreProdSnResVO { + + @ApiModelProperty(value = "错误列表") + List failList; + @ApiModelProperty(value = "成功列表") + List successList; + + @Data + public static class SPSDetailVO { + @ApiModelProperty(value = "档口商品ID") + private Long storeProdId; + @ApiModelProperty(value = "档口商品颜色尺码ID") + private Long storeProdColorId; + @ApiModelProperty(value = "颜色") + private String colorName; + @ApiModelProperty(value = "尺码") + private Integer size; + @ApiModelProperty(value = "商品货号") + private String prodArtNum; + @ApiModelProperty(value = "销售条码") + private String sn; + @ApiModelProperty(value = "销售单价") + private BigDecimal price; + @ApiModelProperty(value = "档口客户优惠金额") + private BigDecimal discount; + } + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdColorSize/StoreProdSnVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdColorSize/StoreProdSnVO.java new file mode 100644 index 000000000..6e876be11 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdColorSize/StoreProdSnVO.java @@ -0,0 +1,26 @@ +package com.ruoyi.web.controller.xkt.vo.storeProdColorSize; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StoreProdSnVO { + + @NotNull(message = "档口ID不能为空!") + @ApiModelProperty(value = "档口ID", required = true) + private String storeId; + @NotNull(message = "条码列表不能为空!") + @ApiModelProperty(value = "条码列表", required = true) + private List snList; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdColorSize/StoreSaleSnResVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdColorSize/StoreSaleSnResVO.java new file mode 100644 index 000000000..3dda07882 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdColorSize/StoreSaleSnResVO.java @@ -0,0 +1,38 @@ +package com.ruoyi.web.controller.xkt.vo.storeProdColorSize; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StoreSaleSnResVO { + + @ApiModelProperty(value = "是否成功") + private Boolean success; + @ApiModelProperty(value = "档口商品ID") + private Long storeProdId; + @ApiModelProperty(value = "档口商品颜色尺码ID") + private Long storeProdColorId; + @ApiModelProperty(value = "颜色") + private String colorName; + @ApiModelProperty(value = "尺码") + private Integer size; + @ApiModelProperty(value = "商品货号") + private String prodArtNum; + @ApiModelProperty(value = "销售条码") + private String sn; + @ApiModelProperty(value = "销售单价") + private BigDecimal price; + @ApiModelProperty(value = "档口客户优惠金额") + private BigDecimal discount; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdColorSize/StoreSaleSnVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdColorSize/StoreSaleSnVO.java new file mode 100644 index 000000000..bdc586e6c --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdColorSize/StoreSaleSnVO.java @@ -0,0 +1,32 @@ +package com.ruoyi.web.controller.xkt.vo.storeProdColorSize; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StoreSaleSnVO { + + @NotNull(message = "档口ID不能为空!") + @ApiModelProperty(value = "档口ID", required = true) + private String storeId; + @NotNull(message = "档口客户ID不能为空!") + @ApiModelProperty(value = "档口客户ID", required = true) + private Long storeCusId; + @NotNull(message = "是否退货不能为空!") + @ApiModelProperty(value = "是否退货", required = true) + private Boolean refund; + @NotBlank(message = "条码不能为空!") + @ApiModelProperty(value = "条码") + private String sn; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockAndDiscountResVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockAndDiscountResVO.java index a9b707b2a..828eb05ea 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockAndDiscountResVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStock/StoreProdStockAndDiscountResVO.java @@ -47,6 +47,8 @@ public class StoreProdStockAndDiscountResVO { public static class SPSADSizeVO { @ApiModelProperty(value = "尺码") private Integer size; + @ApiModelProperty(value = "是否是标准尺码") + private Integer standard; @ApiModelProperty(value = "库存") private Integer stock; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeSale/StoreSaleResVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeSale/StoreSaleResVO.java index f45e591bd..a30f7ff84 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeSale/StoreSaleResVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeSale/StoreSaleResVO.java @@ -62,10 +62,12 @@ public class StoreSaleResVO { private String colorName; @ApiModelProperty(value = "尺码") private Integer size; + @ApiModelProperty(value = "大小码加价 0 不加 1加价") + private Integer addOverPrice; @ApiModelProperty(value = "商品货号") private String prodArtNum; @ApiModelProperty(value = "销售条码") - private String sns; + private String sn; @ApiModelProperty(value = "销售单价") private BigDecimal price; @ApiModelProperty(value = "给客户优惠后单价") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeSale/StoreSaleVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeSale/StoreSaleVO.java index 4d3a90cc5..2f0214404 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeSale/StoreSaleVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeSale/StoreSaleVO.java @@ -71,7 +71,7 @@ public class StoreSaleVO { @NotBlank(message = "商品货号不能为空!") private String prodArtNum; @ApiModelProperty(value = "销售条码") - private String sns; + private String sn; @NotNull(message = "销售单价不能为空!") @ApiModelProperty(value = "销售单价", required = true) private BigDecimal price; diff --git a/sql/ry_20240629.sql b/sql/ry_20240629.sql index e374ef06c..e59090979 100644 --- a/sql/ry_20240629.sql +++ b/sql/ry_20240629.sql @@ -617,4 +617,43 @@ INSERT INTO `sys_product_category` VALUES (47, '人字拖', 8, 3, '0', 'https:// INSERT INTO `sys_product_category` VALUES (48, '一字拖', 8, 4, '0', 'https://pics1.baidu.com/feed/6609c93d70cf3bc758366c966adb10aecc112a85.png@f_auto?token=89fe04971fb0579147e9ccc52683a013', '', 0, '0', '', '2025-04-15 19:57:04', '', '2025-04-15 19:57:04'); INSERT INTO `sys_product_category` VALUES (49, '其他拖鞋', 8, 5, '0', 'https://pics1.baidu.com/feed/6609c93d70cf3bc758366c966adb10aecc112a85.png@f_auto?token=89fe04971fb0579147e9ccc52683a013', '', 0, '0', '', '2025-04-15 19:57:12', '', '2025-04-15 19:57:12'); +SET FOREIGN_KEY_CHECKS = 1; + +-- ---------------------------- +-- Table structure for store +-- ---------------------------- +DROP TABLE IF EXISTS `store`; +CREATE TABLE `store` ( + `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '档口ID', + `user_id` bigint UNSIGNED NOT NULL COMMENT '档口负责人ID', + `store_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '档口名称', + `store_weight` int NULL DEFAULT NULL COMMENT '权重', + `store_logo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '档口logo', + `brand_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '品牌名称', + `contact_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '联系人', + `contact_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '联系电话', + `contact_back_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备选联系电话', + `wechat_account` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信账号', + `qq_account` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'QQ账号', + `alipay_account` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付宝账号', + `operate_years` int UNSIGNED NULL DEFAULT NULL COMMENT '经营年限', + `store_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '档口地址', + `fac_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '工厂地址', + `prod_scale` tinyint UNSIGNED NULL DEFAULT NULL COMMENT '生产规模', + `integrity_gold` decimal(10, 2) NULL DEFAULT NULL COMMENT '保证金', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `trial_end_time` date NULL DEFAULT NULL COMMENT '试用截止时间', + `storage_usage` decimal(10, 3) NULL DEFAULT NULL COMMENT '已使用文件大小', + `template_num` int UNSIGNED NULL DEFAULT NULL COMMENT '档口模板ID', + `store_status` tinyint UNSIGNED NULL DEFAULT NULL COMMENT '档口状态', + `reject_reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '拒绝理由', + `version` bigint UNSIGNED NOT NULL COMMENT '版本号', + `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '删除标志(0代表存在 2代表删除)', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 10001 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '档口' ROW_FORMAT = Dynamic; + SET FOREIGN_KEY_CHECKS = 1; \ No newline at end of file diff --git a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductColorSize.java b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductColorSize.java index 68a7fa85d..0b70e39d8 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductColorSize.java +++ b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreProductColorSize.java @@ -44,35 +44,22 @@ public class StoreProductColorSize extends XktBaseEntity { @Excel(name = "商品尺码") private Integer size; /** - * 档口商品颜色尺码的前缀 + * 档口商品颜色尺码的前缀 1000100000001 xxxx */ @Excel(name = "档口商品颜色尺码的前缀") - private String barcodePrefix; + private String snPrefix; + /** + * 其它系统商品颜色尺码前缀 4260003836 xxx + */ + private String otherSnPrefix; /** * 下一个编号 */ - private Integer nextBarcode; + private Integer nextSn; /** * 是否是标准尺码(0不是 1是) */ @Excel(name = "是否是标准尺码", readConverterExp = "0=不是,1=是") private Integer standard; - @Override - public String toString() { - return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("storeColorId", getStoreColorId()) - .append("storeProdId", getStoreProdId()) - .append("size", getSize()) - .append("barcodePrefix", getBarcodePrefix()) - .append("standard", getStandard()) - .append("version", getVersion()) - .append("delFlag", getDelFlag()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .toString(); - } } diff --git a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreSaleDetail.java b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreSaleDetail.java index beea09d82..75648cebd 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/domain/StoreSaleDetail.java +++ b/xkt/src/main/java/com/ruoyi/xkt/domain/StoreSaleDetail.java @@ -35,6 +35,15 @@ public class StoreSaleDetail extends XktBaseEntity { */ @Excel(name = "档口商品销售ID") private Long storeSaleId; + /** + * 档口客户ID + */ + @Excel(name = "档口客户ID") + private Long storeCusId; + /** + * 档口客户名称呢 + */ + private String storeCusName; /** * 档口ID */ @@ -96,7 +105,7 @@ public class StoreSaleDetail extends XktBaseEntity { * 条码 */ @Excel(name = "条码") - private String sns; + private String sn; /** * 单据日期 */ diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreProdSnDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreProdSnDTO.java new file mode 100644 index 000000000..7711c61a3 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreProdSnDTO.java @@ -0,0 +1,23 @@ +package com.ruoyi.xkt.dto.storeProdColorSize; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StoreProdSnDTO { + + @ApiModelProperty(value = "档口ID") + private String storeId; + @ApiModelProperty(value = "条码列表") + private List snList; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreProdSnResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreProdSnResDTO.java new file mode 100644 index 000000000..7d1d6cdbc --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreProdSnResDTO.java @@ -0,0 +1,48 @@ +package com.ruoyi.xkt.dto.storeProdColorSize; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StoreProdSnResDTO { + + @ApiModelProperty(value = "错误列表") + List failList; + @ApiModelProperty(value = "成功列表") + List successList; + + @Data + @Accessors(chain = true) + public static class SPSDetailDTO { + @ApiModelProperty(value = "档口商品ID") + private Long storeProdId; + @ApiModelProperty(value = "档口商品颜色尺码ID") + private Long storeProdColorId; + @ApiModelProperty(value = "颜色") + private String colorName; + @ApiModelProperty(value = "尺码") + private Integer size; + @ApiModelProperty(value = "商品货号") + private String prodArtNum; + @ApiModelProperty(value = "条码前缀") + private String snPrefix; + @ApiModelProperty(value = "销售条码") + private String sn; + @ApiModelProperty(value = "销售单价") + private BigDecimal price; + @ApiModelProperty(value = "档口客户优惠金额") + private BigDecimal discount; + } + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreSaleSnDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreSaleSnDTO.java new file mode 100644 index 000000000..b5df5f23f --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreSaleSnDTO.java @@ -0,0 +1,27 @@ +package com.ruoyi.xkt.dto.storeProdColorSize; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StoreSaleSnDTO { + + @ApiModelProperty(value = "档口ID") + private String storeId; + @ApiModelProperty(value = "档口客户ID") + private Long storeCusId; + @ApiModelProperty(value = "是否退货") + private Boolean refund; + @ApiModelProperty(value = "条码") + private String sn; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreSaleSnResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreSaleSnResDTO.java new file mode 100644 index 000000000..af1708917 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreSaleSnResDTO.java @@ -0,0 +1,40 @@ +package com.ruoyi.xkt.dto.storeProdColorSize; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@Data +@Accessors(chain = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StoreSaleSnResDTO { + + @ApiModelProperty(value = "是否成功") + private Boolean success; + @ApiModelProperty(value = "档口商品ID") + private Long storeProdId; + @ApiModelProperty(value = "档口商品颜色尺码ID") + private Long storeProdColorId; + @ApiModelProperty(value = "颜色") + private String colorName; + @ApiModelProperty(value = "尺码") + private Integer size; + @ApiModelProperty(value = "商品货号") + private String prodArtNum; + @ApiModelProperty(value = "销售条码") + private String sn; + @ApiModelProperty(value = "销售单价") + private BigDecimal price; + @ApiModelProperty(value = "档口客户优惠金额") + private BigDecimal discount; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockAndDiscountResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockAndDiscountResDTO.java index 0878a62b2..4cc67bae0 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockAndDiscountResDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStock/StoreProdStockAndDiscountResDTO.java @@ -47,6 +47,8 @@ public class StoreProdStockAndDiscountResDTO { public static class SPSADSizeDTO { @ApiModelProperty(value = "尺码") private Integer size; + @ApiModelProperty(value = "是否是标准尺码") + private Integer standard; @ApiModelProperty(value = "库存") private Integer stock; } diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeSale/StoreSaleDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeSale/StoreSaleDTO.java index 46c29b97e..b7e64aa88 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/storeSale/StoreSaleDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeSale/StoreSaleDTO.java @@ -55,7 +55,7 @@ public class StoreSaleDTO { @ApiModelProperty(value = "商品货号") private String prodArtNum; @ApiModelProperty(value = "销售条码") - private String sns; + private String sn; @ApiModelProperty(value = "销售单价") private BigDecimal price; @ApiModelProperty(value = "给客户优惠后单价") diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeSale/StoreSaleResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeSale/StoreSaleResDTO.java index 45b47a4ee..c977b76bc 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/storeSale/StoreSaleResDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeSale/StoreSaleResDTO.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.experimental.Accessors; import java.math.BigDecimal; import java.util.Date; @@ -51,6 +52,7 @@ public class StoreSaleResDTO { private List detailList; @Data + @Accessors(chain = true) public static class SSDetailDTO { @ApiModelProperty(value = "档口商品ID") private Long storeProdId; @@ -62,10 +64,12 @@ public class StoreSaleResDTO { private String colorName; @ApiModelProperty(value = "尺码") private Integer size; + @ApiModelProperty(value = "大小码加价 0 不加 1加价") + private Integer addOverPrice; @ApiModelProperty(value = "商品货号") private String prodArtNum; @ApiModelProperty(value = "销售条码") - private String sns; + private String sn; @ApiModelProperty(value = "销售单价") private BigDecimal price; @ApiModelProperty(value = "给客户优惠后单价") diff --git a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductColorSizeMapper.java b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductColorSizeMapper.java index aebdab9e4..2e8419b94 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductColorSizeMapper.java +++ b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductColorSizeMapper.java @@ -2,8 +2,10 @@ package com.ruoyi.xkt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.xkt.domain.StoreProductColorSize; -import com.ruoyi.xkt.dto.storeProdColorSize.StoreProdColorSizeDTO; import com.ruoyi.xkt.dto.storeProdColorSize.StoreProdSizeDTO; +import com.ruoyi.xkt.dto.storeProdColorSize.StoreProdSnResDTO; +import com.ruoyi.xkt.dto.storeProdColorSize.StoreSaleSnResDTO; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; @@ -17,6 +19,11 @@ import java.util.List; @Repository public interface StoreProductColorSizeMapper extends BaseMapper { + /** + * 将商品颜色价格尺码置为无效 + * + * @param storeProdId 档口商品ID + */ void updateDelFlagByStoreProdId(Long storeProdId); /** @@ -27,4 +34,31 @@ public interface StoreProductColorSizeMapper extends BaseMapper selectListByStoreProdId(Long storeProdId); + /** + * 查询步橘网的条码信息 + * + * @param snPrefix 条码前缀 + * @param storeId 档口ID + * @param storeCusId 档口客户ID + * @return StoreSaleBarcodeResDTO + */ + StoreSaleSnResDTO selectSn(@Param("snPrefix") String snPrefix, @Param("storeId") String storeId, @Param("storeCusId") Long storeCusId); + + /** + * 查询其它系统条码信息 + * + * @param snPrefix 条码前缀 + * @param storeId 档口ID + * @param storeCusId 档口客户ID + * @return StoreSaleBarcodeResDTO + */ + StoreSaleSnResDTO selectOtherSn(@Param("snPrefix") String snPrefix, @Param("storeId") String storeId, @Param("storeCusId") Long storeCusId); + + /** + * 查询普通商品的条码信息 + * + * @param snList 条码列表 + * @return List + */ + List selectSnList(@Param("snList") List snList, @Param("storeId") String storeId); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreSaleDetailMapper.java b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreSaleDetailMapper.java index f5a036f0d..940b3c102 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreSaleDetailMapper.java +++ b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreSaleDetailMapper.java @@ -2,6 +2,8 @@ package com.ruoyi.xkt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.xkt.domain.StoreSaleDetail; +import com.ruoyi.xkt.dto.storeProdColorSize.StoreSaleSnDTO; +import com.ruoyi.xkt.dto.storeProdColorSize.StoreSaleSnResDTO; /** * 档口销售明细Mapper接口 @@ -11,4 +13,10 @@ import com.ruoyi.xkt.domain.StoreSaleDetail; */ public interface StoreSaleDetailMapper extends BaseMapper { + /** + * 根据条码查询档口销售明细销售记录 + * @param barcodeDTO 条码信息 + * @return + */ + StoreSaleSnResDTO selectBySn(StoreSaleSnDTO barcodeDTO); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductColorSizeService.java b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductColorSizeService.java index 095b39e5f..ef874fb24 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductColorSizeService.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductColorSizeService.java @@ -1,5 +1,10 @@ package com.ruoyi.xkt.service; +import com.ruoyi.xkt.dto.storeProdColorSize.StoreProdSnDTO; +import com.ruoyi.xkt.dto.storeProdColorSize.StoreProdSnResDTO; +import com.ruoyi.xkt.dto.storeProdColorSize.StoreSaleSnDTO; +import com.ruoyi.xkt.dto.storeProdColorSize.StoreSaleSnResDTO; + /** * 档口商品颜色的尺码Service接口 * @@ -8,4 +13,19 @@ package com.ruoyi.xkt.service; */ public interface IStoreProductColorSizeService { + /** + * 查询条码 对应的商品信息 + * + * @param barcodeDTO 查询入参 + * @return StoreProdColorSizeBarcodeResDTO + */ + StoreSaleSnResDTO storeSaleSn(StoreSaleSnDTO barcodeDTO); + + /** + * 商品入库、库存盘点查询库存 + * + * @param snsDTO 条码入参 + * @return StoreProdSnsResDTO + */ + StoreProdSnResDTO sn(StoreProdSnDTO snsDTO); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java index 2455a8f68..9bedb9569 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java @@ -1,7 +1,24 @@ package com.ruoyi.xkt.service.impl; +import com.ruoyi.xkt.dto.storeProdColorSize.StoreProdSnDTO; +import com.ruoyi.xkt.dto.storeProdColorSize.StoreProdSnResDTO; +import com.ruoyi.xkt.dto.storeProdColorSize.StoreSaleSnDTO; +import com.ruoyi.xkt.dto.storeProdColorSize.StoreSaleSnResDTO; +import com.ruoyi.xkt.mapper.StoreProductColorSizeMapper; +import com.ruoyi.xkt.mapper.StoreSaleDetailMapper; import com.ruoyi.xkt.service.IStoreProductColorSizeService; +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.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.regex.Pattern; +import java.util.stream.Collectors; /** * 档口商品颜色的尺码Service业务层处理 @@ -10,6 +27,121 @@ import org.springframework.stereotype.Service; * @date 2025-03-26 */ @Service +@RequiredArgsConstructor public class StoreProductColorSizeServiceImpl implements IStoreProductColorSizeService { + final StoreProductColorSizeMapper prodColorSizeMapper; + final StoreSaleDetailMapper saleDetailMapper; + + // 纯数字 + private static final Pattern POSITIVE_PATTERN = Pattern.compile("^\\d+$"); + + /** + * 查询条码 对应的商品信息 + * + * @param snDTO 查询入参 + * @return StoreProdColorSizeBarcodeResDTO + */ + @Override + @Transactional(readOnly = true) + public StoreSaleSnResDTO storeSaleSn(StoreSaleSnDTO snDTO) { + // 非纯数字,则直接返回 + if (!POSITIVE_PATTERN.matcher(snDTO.getSn()).matches()) { + return new StoreSaleSnResDTO().setSuccess(Boolean.FALSE).setSn(snDTO.getSn()); + } + // 销售出库[退货] + if (snDTO.getRefund()) { + // 先查storeSaleDetail中的sns条码是否存在[可能同一个条码,被一个客户多次销售、退货,则取最近的一条] + StoreSaleSnResDTO barcodeResDTO = this.saleDetailMapper.selectBySn(snDTO); + if (ObjectUtils.isNotEmpty(barcodeResDTO)) { + return barcodeResDTO.setSuccess(Boolean.TRUE); + } else { + // 若是没查询到数据,则走正常条码查询流程 + return this.getSnInfo(snDTO); + } + // 销售出库[销售] 正常条码查询流程 + } else { + return this.getSnInfo(snDTO); + } + } + + /** + * 商品入库、库存盘点查询库存 + * + * @param snDTO 条码入参 + * @return StoreProdSnsResDTO + */ + @Override + @Transactional(readOnly = true) + public StoreProdSnResDTO sn(StoreProdSnDTO snDTO) { + // 非纯数字的条码 + List failList = snDTO.getSnList().stream().filter(s -> !POSITIVE_PATTERN.matcher(s).matches()).collect(Collectors.toList()); + + List successList = new ArrayList<>(); + // 步橘网系统的条码 + List snList = snDTO.getSnList().stream().filter(s -> POSITIVE_PATTERN.matcher(s).matches()) + .filter(x -> x.startsWith(snDTO.getStoreId())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(snList)) { + // 截取前13位 作为条码查询条件 + Set pre13SnSet = snList.stream().map(x -> x.substring(0, 13)).collect(Collectors.toSet()); + List existList = prodColorSizeMapper.selectSnList(new ArrayList<>(pre13SnSet), snDTO.getStoreId()); + Map existMap = existList.stream().collect(Collectors.toMap(StoreProdSnResDTO.SPSDetailDTO::getSn, x -> x)); + snList.forEach(sn -> { + String snPrefix = sn.substring(0, 13); + StoreProdSnResDTO.SPSDetailDTO exist = existMap.get(snPrefix); + if (ObjectUtils.isNotEmpty(exist)) { + successList.add( exist.setSn(sn)); + } else { + failList.add( sn); + } + }); + } + // 其它系统的条码 + List otherSnList = snDTO.getSnList().stream().filter(s -> POSITIVE_PATTERN.matcher(s).matches()) + .filter(x -> !x.startsWith(snDTO.getStoreId())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(otherSnList)) { + + // 从系统设置中获取,根据系统迁移时的配置 + final Integer otherSysEndIndex = 9; + + // 截取前 xxx 位 作为条码查询条件 + Set preIndexSnSet = snList.stream().map(x -> x.substring(0, otherSysEndIndex)).collect(Collectors.toSet()); + + + } + + + + + + return null; + } + + /** + * 普通销售流程获取条码对应的商品信息 + * + * @param snDTO 条码入参 + * @return StoreSaleBarcodeResDTO + */ + private StoreSaleSnResDTO getSnInfo(StoreSaleSnDTO snDTO) { + StoreSaleSnResDTO barcodeResDTO; + // 步橘网生成的条码 + if (snDTO.getSn().startsWith(snDTO.getStoreId())) { + final String snsPrefix = snDTO.getSn().substring(0, 13); + // 查询数据库 获取条码对应的商品信息 + barcodeResDTO = prodColorSizeMapper.selectSn(snsPrefix, snDTO.getStoreId(), snDTO.getStoreCusId()); + } else { + + // 从系统设置中获取,根据系统迁移时的配置 + final Integer otherSysEndIndex = 9; + + final String snsPrefix = snDTO.getSn().substring(0, otherSysEndIndex); + // 查询数据库 获取条码对应的商品信息 + barcodeResDTO = prodColorSizeMapper.selectOtherSn(snsPrefix, snDTO.getStoreId(), snDTO.getStoreCusId()); + } + return ObjectUtils.isEmpty(barcodeResDTO) ? new StoreSaleSnResDTO().setSuccess(Boolean.FALSE).setSn(snDTO.getSn()) + : barcodeResDTO.setSuccess(Boolean.TRUE).setSn(snDTO.getSn()); + } + + } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductServiceImpl.java index 64aec1ec9..565ed100f 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductServiceImpl.java @@ -473,6 +473,9 @@ public class StoreProductServiceImpl implements IStoreProductService { this.storeProdColorPriceMapper.insert(prodColorPriceList); this.storeProdColorSizeMapper.insert(prodColorSizeList); this.storeProdColorMapper.insert(prodColorList); + // 设置档口商品价格尺码的barcode_prefix + prodColorSizeList.forEach(x -> x.setSnPrefix(storeId + String.format("%08d", x.getId()))); + this.storeProdColorSizeMapper.updateById(prodColorSizeList); // 设置了档口商品全部优惠的客户,新增商品优惠 this.createStoreCusDiscount(prodColorList, storeProdId); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStockServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStockServiceImpl.java index 3ce3c75ea..1d46120c0 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStockServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStockServiceImpl.java @@ -115,7 +115,7 @@ public class StoreProductStockServiceImpl implements IStoreProductStockService { .eq(StoreProductColorSize::getStoreProdId, basicInfoDTO.getStoreProdId()).eq(StoreProductColorSize::getStoreColorId, basicInfoDTO.getStoreColorId()) .eq(StoreProductColorSize::getDelFlag, Constants.UNDELETED)); List sizeStockList = prodColorSizeList.stream().map(size -> new StoreProdStockAndDiscountResDTO.SPSADSizeDTO() - .setSize(size.getSize()).setStock(this.getSizeStock(size.getSize(), stock))).collect(Collectors.toList()); + .setSize(size.getSize()).setStandard(size.getStandard()).setStock(this.getSizeStock(size.getSize(), stock))).collect(Collectors.toList()); return basicInfoDTO.setStoreCusId(dto.getStoreCusId()).setStoreId(dto.getStoreId()).setSizeStockList(sizeStockList); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleServiceImpl.java index a5c617c6c..e6400f331 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreSaleServiceImpl.java @@ -55,6 +55,7 @@ public class StoreSaleServiceImpl implements IStoreSaleService { final StoreSaleRefundRecordMapper refundRecordMapper; final StoreSaleRefundRecordDetailMapper refundRecordDetailMapper; final IStoreProductStockService storeProdStockService; + final StoreProductMapper storeProdMapper; /** * 获取当前档口客户的销售业绩 @@ -268,8 +269,8 @@ public class StoreSaleServiceImpl implements IStoreSaleService { int count = storeSaleMapper.insert(storeSale); // 处理订单明细 List saleDetailList = storeSaleDTO.getDetailList().stream().map(x -> { - StoreSaleDetail saleDetail = BeanUtil.toBean(x, StoreSaleDetail.class).setStoreSaleId(storeSale.getId()) - .setStoreId(storeSale.getStoreId()).setVoucherDate(voucherDate); + StoreSaleDetail saleDetail = BeanUtil.toBean(x, StoreSaleDetail.class).setStoreSaleId(storeSale.getId()).setStoreId(storeSale.getStoreId()) + .setVoucherDate(voucherDate).setStoreCusId(storeSale.getStoreCusId()).setStoreCusName(storeSale.getStoreCusName()); saleDetail.setCreateBy(loginUser.getUsername()); return saleDetail; }).collect(Collectors.toList()); @@ -311,12 +312,12 @@ public class StoreSaleServiceImpl implements IStoreSaleService { // 若为返单,则将之前数据记录到返单记录表中 if (Objects.equals(storeSaleDTO.getRefund(), Boolean.TRUE)) { // 订单记录到StoreSaleRefundRecord - StoreSaleRefundRecord refundRecord = BeanUtil.toBean(storeSale, StoreSaleRefundRecord.class).setStoreSaleId(storeSale.getId()) - .setOperatorId(loginUser.getUserId()).setOperatorName(loginUser.getUsername()); + StoreSaleRefundRecord refundRecord = BeanUtil.toBean(storeSale, StoreSaleRefundRecord.class).setId(null) + .setStoreSaleId(storeSale.getId()).setOperatorId(loginUser.getUserId()).setOperatorName(loginUser.getUsername()); this.refundRecordMapper.insert(refundRecord); // 明细记录到StoreSaleRefundRecordDetail List refundDetailRecordList = saleDetailList.stream().map(x -> BeanUtil.toBean(x, StoreSaleRefundRecordDetail.class) - .setStoreSaleRefundRecordId(refundRecord.getId())).collect(Collectors.toList()); + .setId(null).setStoreSaleRefundRecordId(refundRecord.getId())).collect(Collectors.toList()); this.refundRecordDetailMapper.insert(refundDetailRecordList); } // 更新档口销售数据 @@ -337,7 +338,8 @@ public class StoreSaleServiceImpl implements IStoreSaleService { this.storeSaleDetailMapper.updateById(saleDetailList.stream().peek(x -> x.setDelFlag(Constants.DELETED)).collect(Collectors.toList())); // 再新增档口销售出库明细数据 List detailList = storeSaleDTO.getDetailList().stream().map(x -> BeanUtil.toBean(x, StoreSaleDetail.class) - .setStoreSaleId(storeSale.getId()).setStoreId(storeSale.getStoreId()).setVoucherDate(voucherDate)) + .setStoreSaleId(storeSale.getId()).setStoreId(storeSale.getStoreId()).setStoreCusId(storeSale.getStoreCusId()) + .setStoreCusName(storeSale.getStoreCusName()).setVoucherDate(voucherDate)) .collect(Collectors.toList()); this.storeSaleDetailMapper.insert(detailList); // 汇总编辑的存货总数量 @@ -374,7 +376,11 @@ public class StoreSaleServiceImpl implements IStoreSaleService { // 查询销售出库明细 List saleDetailList = this.storeSaleDetailMapper.selectList(new LambdaQueryWrapper() .eq(StoreSaleDetail::getStoreSaleId, storeSaleId).eq(StoreSaleDetail::getDelFlag, Constants.UNDELETED)); - storeSaleDTO.setDetailList(saleDetailList.stream().map(x -> BeanUtil.toBean(x, StoreSaleResDTO.SSDetailDTO.class)).collect(Collectors.toList())); + List storeProdList = this.storeProdMapper.selectByIds(saleDetailList.stream().map(StoreSaleDetail::getStoreProdId).collect(Collectors.toList())); + Map storeProdMap = storeProdList.stream().collect(Collectors.toMap(StoreProduct::getId, x -> x)); + storeSaleDTO.setDetailList(saleDetailList.stream().map(x -> BeanUtil.toBean(x, StoreSaleResDTO.SSDetailDTO.class) + .setAddOverPrice(ObjectUtils.isNotEmpty(storeProdMap.get(x.getStoreProdId())) ? storeProdMap.get(x.getStoreProdId()).getOverPrice() : 0)) + .collect(Collectors.toList())); return storeSaleDTO; } diff --git a/xkt/src/main/resources/mapper/StoreProductColorSizeMapper.xml b/xkt/src/main/resources/mapper/StoreProductColorSizeMapper.xml index e9d51e80b..1be925c31 100644 --- a/xkt/src/main/resources/mapper/StoreProductColorSizeMapper.xml +++ b/xkt/src/main/resources/mapper/StoreProductColorSizeMapper.xml @@ -19,6 +19,71 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND spcs.store_prod_id = #{storeProdId} ORDER BY spcs.size + + + + + + + diff --git a/xkt/src/main/resources/mapper/StoreSaleDetailMapper.xml b/xkt/src/main/resources/mapper/StoreSaleDetailMapper.xml index 2d31eac6c..393d18462 100644 --- a/xkt/src/main/resources/mapper/StoreSaleDetailMapper.xml +++ b/xkt/src/main/resources/mapper/StoreSaleDetailMapper.xml @@ -4,5 +4,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + \ No newline at end of file