浏览代码

no message

FengChaoYu 9 月之前
父节点
当前提交
b95edfcaa2

+ 18 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/stock/WorkerStockDTO.java

@@ -70,6 +70,24 @@ public class WorkerStockDTO {
     @NotBlank(message = "商品名称不能空")
     private String goodsName;
 
+    @ApiModelProperty("网点商品编码")
+    private String websitGoodsId;
+
+    @ApiModelProperty("网点商品名称")
+    private String websitGoodsName;
+
+    @ApiModelProperty("网点商品转换系数")
+    private BigDecimal goodsSalesConvertQty;
+
+    @ApiModelProperty("网点规格型号")
+    private String goodsSpecification;
+
+    @ApiModelProperty("网点销售数量")
+    private BigDecimal websitGoodsQty;
+
+    @ApiModelProperty("网点销售价")
+    private BigDecimal websitGoodsPrice;
+
     @ApiModelProperty("单位id")
     private String unitId;
 

+ 21 - 4
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/WebsitSalesLogic.java

@@ -75,6 +75,7 @@ public class WebsitSalesLogic {
     private final StorageService storageService;
     private final AllInPayLogic allInPayLogic;
     private final AdminWebsitPayConfigService adminWebsitPayConfigService;
+    private final WorkerGoodsRelaService workerGoodsRelaService;
 
     public IPage<WebsitSalesVO> page(WebsitSalesParamBean zfireParamBean) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
@@ -230,7 +231,6 @@ public class WebsitSalesLogic {
             }
         }
 
-
         Map<String, WebsitGoods> goodsMap = goodsList.stream().collect(Collectors.toMap(WebsitGoods::getGoodsId, Function.identity()));
 
         for (WebsitSalesItem item : itemList) {
@@ -242,16 +242,33 @@ public class WebsitSalesLogic {
                     .setGoodsStockUnit(goods.getGoodsStockUnit())
                     .setGoodsSpecification(goods.getGoodsSpecification())
                     .setGoodsSalesConvertQty(goods.getGoodsSalesConvertQty())
-                    .setConvertBitScale(goods.getConvertBitScale())
+                    .setConvertBitScale(1)
                     .setManageWorkerStock(goods.getManageWorkerStock());
 
-            BigDecimal convertQty = item.getSalesQty().divide(goods.getGoodsSalesConvertQty(), goods.getConvertBitScale(), BigDecimal.ROUND_UP);
+            BigDecimal convertQty = item.getSalesQty().divide(goods.getGoodsSalesConvertQty(), 1, BigDecimal.ROUND_UP);
+            BigDecimal totalSaleValue = item.getSalesQty().multiply(item.getPrice());
+            BigDecimal convertPrice = totalSaleValue.divide(convertQty, 2, BigDecimal.ROUND_DOWN);
 
             if (sales.getGoodsType().equals(WebsitGoodsTypeEnum.P.getKey()) || goods.getGoodsSalesConvertQty().compareTo(BigDecimal.ONE) == 0) {
                 convertQty = item.getSalesQty();
+                convertPrice = item.getPrice();
+            }
+
+            // 类型为辅材时注入师傅辅材id
+            if (sales.getGoodsType().equals(WebsitGoodsTypeEnum.M.getKey())
+                    && (StringUtils.isBlank(item.getManageWorkerStock()) || item.getManageWorkerStock().equals(IsYesNoEnum.YES.getKey()))) {
+                final WorkerGoodsRela goodsRela = workerGoodsRelaService.lambdaQuery()
+                        .eq(WorkerGoodsRela::getCompanyWechatId, goods.getCompanyWechatId())
+                        .eq(WorkerGoodsRela::getWebsitGoodsId, goods.getGoodsId())
+                        .one();
+                if (Objects.nonNull(goodsRela)) {
+                    item.setWorkerGoodsId(goodsRela.getWorkerGoodsId())
+                            .setWorkerGoodsName(goodsRela.getWorkerGoodsName());
+                }
             }
 
-            item.setConvertQty(convertQty);
+            item.setConvertQty(convertQty)
+                .setConvertPrice(convertPrice);
         }
 
     }

+ 27 - 6
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/stock/WorkSalesStockLogic.java

@@ -1,13 +1,16 @@
 package com.gree.mall.manager.logic.material.stock;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
 import com.gree.mall.manager.bean.material.stock.WorkerStockDTO;
 import com.gree.mall.manager.enums.material.DirectFlagEnum;
 import com.gree.mall.manager.enums.material.PartsAttrEnum;
+import com.gree.mall.manager.enums.material.WebsitGoodsTypeEnum;
 import com.gree.mall.manager.enums.material.WorkerStockFlagEnum;
 import com.gree.mall.manager.plus.entity.WebsitSales;
 import com.gree.mall.manager.plus.entity.WebsitSalesItem;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -24,6 +27,11 @@ public class WorkSalesStockLogic {
     public void salesInStock(WebsitSales sales, List<WebsitSalesItem> salesItems, String refType) throws Exception {
         List<WorkerStockDTO> workerStockDTOS = new ArrayList<>();
         for (WebsitSalesItem item : salesItems) {
+            // 类型为辅材并且师傅辅材编号为空时跳过本次
+            if (sales.getGoodsType().equals(WebsitGoodsTypeEnum.M.getKey())
+                    && StringUtils.isBlank(item.getWorkerGoodsId())) {
+                continue;
+            }
             WorkerStockDTO workerStockDTO = new WorkerStockDTO();
             workerStockDTO.setCompanyWechatId(sales.getCompanyWechatId());
             workerStockDTO.setCompanyWechatName(sales.getCompanyWechatName());
@@ -35,15 +43,26 @@ public class WorkSalesStockLogic {
             workerStockDTO.setSdate(sales.getCreateTime());
             workerStockDTO.setWorkerWebsitId(sales.getWorkerWebsitId());
             workerStockDTO.setWorkerWebsitName(sales.getWorkerWebsitName());
-            workerStockDTO.setGoodsId(item.getGoodsId());
-            workerStockDTO.setGoodsName(item.getGoodsName());
+            if (sales.getGoodsType().equals(WebsitGoodsTypeEnum.M.getKey())) {
+                workerStockDTO.setWebsitGoodsId(item.getGoodsId());
+                workerStockDTO.setWebsitGoodsName(item.getGoodsName());
+                workerStockDTO.setGoodsSalesConvertQty(item.getGoodsSalesConvertQty());
+                workerStockDTO.setGoodsSpecification(item.getGoodsSpecification());
+                workerStockDTO.setWebsitGoodsQty(item.getSalesQty());
+                workerStockDTO.setWebsitGoodsPrice(item.getPrice());
+                workerStockDTO.setGoodsId(item.getWorkerGoodsId());
+                workerStockDTO.setGoodsName(item.getWorkerGoodsName());
+            } else {
+                workerStockDTO.setGoodsId(item.getGoodsId());
+                workerStockDTO.setGoodsName(item.getGoodsName());
+            }
             workerStockDTO.setGoodsType(item.getGoodsType());
-            workerStockDTO.setPrice(item.getPrice());
+            workerStockDTO.setChangeQty(item.getConvertQty());
+            workerStockDTO.setPrice(item.getConvertPrice());
             workerStockDTO.setUnitName(item.getGoodsSalesUnit());
             workerStockDTO.setRef(sales.getSalesId());
             workerStockDTO.setRefType(refType);
             workerStockDTO.setPartsAttr(PartsAttrEnum.NEW.getKey());
-            workerStockDTO.setChangeQty(item.getConvertQty());
             workerStockDTO.setDirectFlag(DirectFlagEnum.ADD.getKey());
             workerStockDTO.setFlag(WorkerStockFlagEnum.TAKE.getKey());
             workerStockDTO.setObj("师傅");
@@ -53,8 +72,10 @@ public class WorkSalesStockLogic {
             workerStockDTO.setOperateTime(DateUtil.date());
             workerStockDTOS.add(workerStockDTO);
         }
-        // 开始处理库存
-        websitGoodsStockLogic.handleWorkerStock(workerStockDTOS);
+        if (CollectionUtil.isNotEmpty(workerStockDTOS)) {
+            // 开始处理库存
+            websitGoodsStockLogic.handleWorkerStock(workerStockDTOS);
+        }
     }
 
 }