|
@@ -5,6 +5,8 @@ import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ruoyi.common.constant.StatusConstant;
|
|
|
+import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
+import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
import com.sd.business.entity.bom.dto.BomSpecDto;
|
|
|
import com.sd.business.entity.bom.dto.BomSpecSelectDto;
|
|
@@ -13,16 +15,19 @@ import com.sd.business.entity.bom.dto.BomSpecUpdateBoardSortDto;
|
|
|
import com.sd.business.entity.bom.po.BomSpec;
|
|
|
import com.sd.business.entity.bom.vo.BomSpecBoardSelectVo;
|
|
|
import com.sd.business.entity.bom.vo.BomSpecVo;
|
|
|
+import com.sd.business.entity.department.constant.DepartmentConstant;
|
|
|
import com.sd.business.entity.inventory.po.Inventory;
|
|
|
+import com.sd.business.entity.warehouse.constant.WarehouseConstant;
|
|
|
import com.sd.business.mapper.bom.BomSpecMapper;
|
|
|
import com.sd.business.service.bom.BomSpecService;
|
|
|
import com.sd.business.service.inventory.InventoryService;
|
|
|
-import com.sd.framework.util.StreamUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -89,11 +94,24 @@ public class BomSpecServiceImpl extends ServiceImpl<BomSpecMapper, BomSpec> impl
|
|
|
@Override
|
|
|
public List<BomSpecBoardSelectVo> getBoardList() {
|
|
|
List<BomSpec> list = this.list(q -> q.eq(BomSpec::getIsShowBoard, StatusConstant.YES).orderByAsc(BomSpec::getSort));
|
|
|
+ List<Long> bomSpecIds = list.stream().map(BaseIdPo::getId).collect(Collectors.toList());
|
|
|
+ // 查询半成品和包材库存
|
|
|
+ List<Long> warehouseIds = new ArrayList<>();
|
|
|
+ warehouseIds.add(WarehouseConstant.SEMI_FINISHED_PRODUCT);
|
|
|
+ warehouseIds.add(WarehouseConstant.PACKAGING_MATERIAL);
|
|
|
+
|
|
|
+ Map<Long, Inventory> inventoryMap = inventoryService.mapKEntity(Inventory::getBomSpecId, q -> q.eq(Inventory::getDepartmentId, DepartmentConstant.SD_SPORTS)
|
|
|
+ .in(Inventory::getWarehouseId, warehouseIds)
|
|
|
+ .in(Inventory::getBomSpecId, bomSpecIds));
|
|
|
List<BomSpecBoardSelectVo> boardSelectList = BeanUtil.copyToList(list, BomSpecBoardSelectVo.class);
|
|
|
List<BomSpecBoardSelectVo> collect = boardSelectList.stream().peek(item -> {
|
|
|
- List<Inventory> inventoryList = inventoryService.list(q -> q.eq(Inventory::getBomSpecId, item.getId()));
|
|
|
- BigDecimal inventoryQuantity = ObjectUtil.isEmpty(inventoryList) ? BigDecimal.ZERO : StreamUtil.bigDecimalAdd(inventoryList, Inventory::getQuantity);
|
|
|
- item.setInventoryQuantity(inventoryQuantity);
|
|
|
+ Inventory inventory = inventoryMap.get(item.getId());
|
|
|
+ if (inventory == null) {
|
|
|
+ item.setInventoryQuantity(BigDecimal.ZERO);
|
|
|
+ } else {
|
|
|
+ BigDecimal inventoryQuantity = inventory.getQuantity().add(inventory.getLockQuantity() == null ? BigDecimal.ZERO : inventory.getLockQuantity());
|
|
|
+ item.setInventoryQuantity(inventoryQuantity);
|
|
|
+ }
|
|
|
}).collect(Collectors.toList());
|
|
|
return collect;
|
|
|
}
|
|
@@ -114,4 +132,16 @@ public class BomSpecServiceImpl extends ServiceImpl<BomSpecMapper, BomSpec> impl
|
|
|
this.update(q -> q.set(BomSpec::getSort, currentSort).eq(BomSpec::getId, bomSpec.getId()));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void editPrice(BomSpecDto bomSpecDto) {
|
|
|
+ BomSpec bomSpec = this.getById(bomSpecDto.getId());
|
|
|
+ if (bomSpec == null) {
|
|
|
+ throw new ServiceException("未知bom规格id!");
|
|
|
+ }
|
|
|
+ bomSpec.setCostPrice(bomSpecDto.getCostPrice());
|
|
|
+ bomSpec.setInternalSellingPrice(bomSpecDto.getInternalSellingPrice());
|
|
|
+ bomSpec.setExternalSellingPrice(bomSpecDto.getExternalSellingPrice());
|
|
|
+ this.updateById(bomSpec);
|
|
|
+ }
|
|
|
}
|