huangjiayang
2025-05-09 6e2533f366a28e5f0147f8c8b62a1593acc2a61c
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomStockDetailServiceImpl.java
@@ -1,11 +1,17 @@
package com.aps.core.service.impl;
import java.math.BigDecimal;
import java.util.List;
import cn.hutool.core.util.IdUtil;
import com.aps.common.core.utils.DateUtils;
import com.aps.common.security.utils.SecurityUtils;
import com.aps.core.domain.*;
import com.aps.core.mapper.ApsMaterialStorageManagementMapper;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.aps.core.mapper.ApsPlateStandardRequireBomStockDetailMapper;
import com.aps.core.domain.ApsPlateStandardRequireBomStockDetail;
import com.aps.core.service.IApsPlateStandardRequireBomStockDetailService;
/**
@@ -19,7 +25,11 @@
{
    @Autowired
    private ApsPlateStandardRequireBomStockDetailMapper apsPlateStandardRequireBomStockDetailMapper;
    @Resource
    ApsMaterialStorageManagementMapper itemStorageMapper;
    @Resource
    ApsPlateStandardRequireBomStockDetailMapper plateBomStockDetailMapper;
    /**
     * 查询ApsPlateStandardRequireBomStockDetail
     * 
@@ -93,4 +103,34 @@
    {
        return apsPlateStandardRequireBomStockDetailMapper.deleteApsPlateStandardRequireBomStockDetailById(id);
    }
    /**
     * 计算物料剩余库存 并保存物料剩余库存明细。
     * */
    @Override
    public void saveStorageAndDetail(ApsMaterialStorageManagement itemStorage, ApsPlatePlan plan, String bomLineId,String itemCode, String batchNum, BigDecimal deductionAmount, BigDecimal afterStockAmount,Long requireId){
        /*更新物料剩余库存*/
        itemStorageMapper.updateMaterialStorageByVersion(itemStorage.getId(), afterStockAmount,itemStorage.getVersion());
        /*记录扣减明细*/
        ApsPlateStandardRequireBomStockDetail bomStockDetail = ApsPlateStandardRequireBomStockDetail.builder()
                .id(IdUtil.getSnowflakeNextId())
                .requireId(requireId)
                .requireTrackId(plan.getRequireId())
                .bomLineId(bomLineId)
                .bomLineCode(itemCode)
                .beforeStockAmount(itemStorage.getRemainderStock())
                .deductionAmount(deductionAmount)
                .afterStockAmount(afterStockAmount)
                .batchNumber(batchNum)
                .orgCode(itemStorage.getApplicableFactories())
                .delFlag("0")
                .build();
        bomStockDetail.setCreateBy(SecurityUtils.getUsername());
        bomStockDetail.setCreateTime(DateUtils.getNowDate());
        plateBomStockDetailMapper.insertApsPlateStandardRequireBomStockDetail(bomStockDetail);
    }
}