Просмотр исходного кода

pms 本地库存列表 添加统计

zhangcl 2 месяцев назад
Родитель
Сommit
9357280ac8

+ 22 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotlockstock/IotLockStockController.java

@@ -1,6 +1,7 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotlockstock;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjUtil;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
@@ -26,8 +27,10 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -99,12 +102,30 @@ public class IotLockStockController {
     @PreAuthorize("@ss.hasPermission('pms:iot-lock-stock:query')")
     public CommonResult<PageResult<IotLockStockRespVO>> getIotLockStockPage(@Valid IotLockStockPageReqVO pageReqVO) {
         PageResult<IotLockStockDO> pageResult = iotLockStockService.getIotLockStockPage(pageReqVO);
+        List<IotLockStockDO> lockStockList = iotLockStockService.getIotLockStocks(pageReqVO);
+        // 计算符合查询条件的 库存总数量 库存总金额
+        BigDecimal totalQuantity;
+        BigDecimal totalAmount;
+        if (CollUtil.isNotEmpty(lockStockList)) {
+            totalQuantity = lockStockList.stream()
+                    .map(IotLockStockDO::getQuantity)
+                    .filter(Objects::nonNull)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+            totalAmount = lockStockList.stream()
+                    .filter(stock -> ObjUtil.isNotEmpty(stock.getQuantity()) && ObjUtil.isNotEmpty(stock.getUnitPrice()))
+                    .map(stock -> stock.getQuantity().multiply(stock.getUnitPrice()))
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+        } else {
+            totalQuantity = BigDecimal.ZERO;
+            totalAmount = BigDecimal.ZERO;
+        }
         // 拼接 工厂 成本中心 库存地点
         Map<Long, SapOrgRespDTO> factoryMap = sapOrgApi.getSapOrgMap(
                 convertList(pageResult.getList(), IotLockStockDO::getFactoryId));
         Map<Long, SapOrgRespDTO> costCenterMap = sapOrgApi.getSapOrgMap(
                 convertList(pageResult.getList(), IotLockStockDO::getCostCenterId));
-        return success(new PageResult<>(IotLockStockConvert.INSTANCE.convertList(pageResult.getList(), factoryMap, costCenterMap),
+        return success(new PageResult<>(IotLockStockConvert.INSTANCE.convertList(pageResult.getList(), factoryMap, costCenterMap, totalQuantity, totalAmount),
                 pageResult.getTotal()));
     }
 

+ 9 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotlockstock/vo/IotLockStockRespVO.java

@@ -116,4 +116,13 @@ public class IotLockStockRespVO {
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
+    /**
+     * 扩展字段
+     */
+    @Schema(description = "库存总数量", example = "243.65")
+    private BigDecimal totalQuantity;
+
+    @Schema(description = "库存总金额", example = "243.65")
+    private BigDecimal totalAmount;
+
 }

+ 8 - 3
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/convert/iotlockstock/IotLockStockConvert.java

@@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.system.api.saporg.dto.SapOrgRespDTO;
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -16,12 +17,14 @@ public interface IotLockStockConvert {
 
     IotLockStockConvert INSTANCE = Mappers.getMapper(IotLockStockConvert.class);
 
-    default List<IotLockStockRespVO> convertList(List<IotLockStockDO> list, Map<Long, SapOrgRespDTO> factoryMap, Map<Long, SapOrgRespDTO> costCenterMap) {
+    default List<IotLockStockRespVO> convertList(List<IotLockStockDO> list, Map<Long, SapOrgRespDTO> factoryMap,
+                                                 Map<Long, SapOrgRespDTO> costCenterMap, BigDecimal totalQuantity, BigDecimal totalAmount) {
         return CollectionUtils.convertList(list, lockStock -> convert1(lockStock, factoryMap.get(lockStock.getFactoryId()),
-                costCenterMap.get(lockStock.getCostCenterId())));
+                costCenterMap.get(lockStock.getCostCenterId()), totalQuantity, totalAmount));
     }
 
-    default IotLockStockRespVO convert1(IotLockStockDO lockStock, SapOrgRespDTO factory, SapOrgRespDTO costCenter) {
+    default IotLockStockRespVO convert1(IotLockStockDO lockStock, SapOrgRespDTO factory,
+                                        SapOrgRespDTO costCenter, BigDecimal totalQuantity, BigDecimal totalAmount) {
         IotLockStockRespVO lockStockVO = BeanUtils.toBean(lockStock, IotLockStockRespVO.class);
         if (factory != null) {
             lockStockVO.setFactory(factory.getFactoryName());
@@ -29,6 +32,8 @@ public interface IotLockStockConvert {
         if (costCenter != null) {
             lockStockVO.setCostCenter(costCenter.getCostCenterName());
         }
+        lockStockVO.setTotalQuantity(totalQuantity);
+        lockStockVO.setTotalAmount(totalAmount);
         return lockStockVO;
     }
 

+ 8 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotlockstock/IotLockStockService.java

@@ -55,6 +55,14 @@ public interface IotLockStockService {
      */
     PageResult<IotLockStockDO> getIotLockStockPage(IotLockStockPageReqVO pageReqVO);
 
+    /**
+     * 获得PMS 本地 库存分页
+     *
+     * @param pageReqVO 分页查询
+     * @return PMS 本地 库存分页
+     */
+    List<IotLockStockDO> getIotLockStocks(IotLockStockPageReqVO pageReqVO);
+
     /**
      * 获得PMS 本地 库存 列表
      *

+ 5 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotlockstock/IotLockStockServiceImpl.java

@@ -86,6 +86,11 @@ public class IotLockStockServiceImpl implements IotLockStockService {
         return iotLockStockMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public List<IotLockStockDO> getIotLockStocks(IotLockStockPageReqVO pageReqVO) {
+        return iotLockStockMapper.selectList(pageReqVO);
+    }
+
     @Override
     public Map<String, BigDecimal> getIotLockStockList(IotLockStockPageReqVO pageReqVO) {
         List<IotLockStockDO> lockStocks = iotLockStockMapper.selectList(pageReqVO);