Преглед на файлове

Merge remote-tracking branch 'origin/master'

caozj преди 2 години
родител
ревизия
99bf95ff37

+ 7 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractVo.java

@@ -98,4 +98,11 @@ public class ContractVo extends Contract {
      * 交接单附件信息
      * 交接单附件信息
      */
      */
     List<FileInfoVo> packageFileInfoVOList;
     List<FileInfoVo> packageFileInfoVOList;
+
+    /**
+     * 客户标签(存在多个用逗号隔开)
+     */
+    private String  tag;
+
 }
 }
+

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/sample/vo/SampleVo.java

@@ -32,5 +32,10 @@ public class SampleVo extends Sample {
      */
      */
     List<FileInfoVo> packageFileInfoVOList;
     List<FileInfoVo> packageFileInfoVOList;
 
 
+    /**
+     * 客户标签(存在多个用逗号隔开)
+     */
+    private String  tag;
+
 
 
 }
 }

+ 1 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductServiceImpl.java

@@ -168,6 +168,7 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
         wrapper.ge("t2.`status`",30);
         wrapper.ge("t2.`status`",30);
         wrapper.lt("t2.`status`",88);
         wrapper.lt("t2.`status`",88);
         wrapper.gt("t1.expend_quantity",0);
         wrapper.gt("t1.expend_quantity",0);
+        //查询合同交接单的数据(只查询有添加交接单的数据)
         Page<ContractProductVo> page = this.baseMapper.contractHandoverPage(dto.getPage(), wrapper);
         Page<ContractProductVo> page = this.baseMapper.contractHandoverPage(dto.getPage(), wrapper);
 
 
         List<ContractProductVo> list = page.getRecords();
         List<ContractProductVo> list = page.getRecords();

+ 2 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -131,6 +131,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                 if (MapUtils.isNotEmpty(cusMap)) {//客户
                 if (MapUtils.isNotEmpty(cusMap)) {//客户
                     List<Customer> customers = cusMap.getOrDefault(p.getBuyCorporationId(), null);
                     List<Customer> customers = cusMap.getOrDefault(p.getBuyCorporationId(), null);
                     p.setBuyCorporationName(customers == null ? null : customers.get(0).getName());
                     p.setBuyCorporationName(customers == null ? null : customers.get(0).getName());
+                    //赋值客户标签
+                    p.setTag(customers == null ? null : customers.get(0).getTag());
                 }
                 }
 
 
                 //赋值交接单附件
                 //赋值交接单附件

+ 3 - 1
hx-sale/src/main/java/com/fjhx/sale/service/sample/impl/SampleServiceImpl.java

@@ -90,6 +90,8 @@ public class SampleServiceImpl extends ServiceImpl<SampleMapper, Sample> impleme
                 if (MapUtils.isNotEmpty(cusMap)) {//客户
                 if (MapUtils.isNotEmpty(cusMap)) {//客户
                     List<Customer> customers = cusMap.getOrDefault(p.getBuyCorporationId(), null);
                     List<Customer> customers = cusMap.getOrDefault(p.getBuyCorporationId(), null);
                     p.setBuyCorporationName(customers == null ? null : customers.get(0).getName());
                     p.setBuyCorporationName(customers == null ? null : customers.get(0).getName());
+                    //赋值客户标签
+                    p.setTag(customers == null ? null : customers.get(0).getTag());
                 }
                 }
 
 
                 //赋值交接单附件
                 //赋值交接单附件
@@ -157,7 +159,7 @@ public class SampleServiceImpl extends ServiceImpl<SampleMapper, Sample> impleme
         wrapper.ge("t2.`status`",30);
         wrapper.ge("t2.`status`",30);
         wrapper.lt("t2.`status`",88);
         wrapper.lt("t2.`status`",88);
         wrapper.gt("t1.expend_quantity",0);
         wrapper.gt("t1.expend_quantity",0);
-        //查询样品交接单列表
+        //查询样品交接单列表(只查询有交接单的数据)
         Page<ContractProductVo> page = this.baseMapper.sampleHandoverList(dto.getPage(), wrapper);
         Page<ContractProductVo> page = this.baseMapper.sampleHandoverList(dto.getPage(), wrapper);
 
 
         List<ContractProductVo> list = page.getRecords();
         List<ContractProductVo> list = page.getRecords();

+ 60 - 0
hx-wms/src/main/java/com/fjhx/wms/utils/CalculatingUnitPriceUtil.java

@@ -0,0 +1,60 @@
+package com.fjhx.wms.utils;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.wms.entity.stock.po.Stock;
+import com.fjhx.wms.service.stock.StockService;
+import com.ruoyi.common.exception.ServiceException;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 计算结存单价
+ */
+public class CalculatingUnitPriceUtil {
+
+    private static final StockService stockService = SpringUtil.getBean(StockService.class);
+    private static final ProductInfoService productInfoService = SpringUtil.getBean(ProductInfoService.class);
+
+    /**
+     * 加权平均值
+     * (库存单价 * 库存数量 + 入库单价 * 入库数量) / (库存数量 + 入库数量)
+     *
+     * @param productId 产品id
+     * @param quantity  入库数量
+     * @param price     入库单价
+     * @return 加权平均值
+     */
+    public static BigDecimal weightedMean(Long productId, BigDecimal quantity, BigDecimal price) {
+        BigDecimal oldUnitPrice = getOldUnitPrice(productId);
+        BigDecimal stockQuantity = getStockQuantity(productId);
+
+        return oldUnitPrice.multiply(stockQuantity).add(price.multiply(quantity))
+                .divide(stockQuantity.add(quantity), 4, RoundingMode.HALF_UP);
+    }
+
+    /**
+     * 获取原结存单价
+     */
+    private static BigDecimal getOldUnitPrice(Long productId) {
+        ProductInfo productInfo = productInfoService.getById(productId);
+        if (productInfo == null) {
+            throw new ServiceException("未找到产品");
+        }
+        return ObjectUtil.defaultIfNull(productInfo.getUnitPrice(), BigDecimal.ZERO);
+    }
+
+    /**
+     * 获取库存数量
+     */
+    private static BigDecimal getStockQuantity(Long productId) {
+        List<Stock> list = stockService.list(q -> q.eq(Stock::getProductId, productId));
+        return list.stream().map(Stock::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+    }
+
+}