sfd
2025-05-26 2a64b537e8e3bce9ce030585a3da17d48379c0ad
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateStandardRequireServiceImpl.java
@@ -1,29 +1,27 @@
package com.aps.core.service.impl.ApsPlate;
import java.math.BigDecimal;
import java.util.*;
import cn.hutool.core.util.IdUtil;
import com.aps.common.core.utils.DateUtils;
import com.aps.common.security.utils.DictUtils;
import com.aps.common.security.utils.SecurityUtils;
import com.aps.core.domain.*;
import com.aps.core.domain.ApsPlate.ApsPlatePlan;
import com.aps.core.domain.ApsPlate.ApsPlateStandardRequireBomOrderDetail;
import com.aps.core.domain.ApsPlate.ApsPlateStandardRequireBomStockDetail;
import com.aps.core.domain.ApsBom;
import com.aps.core.domain.ApsMaterialStorageManagement;
import com.aps.core.domain.ApsPlate.*;
import com.aps.core.domain.ApsStandardProcessRouteLine;
import com.aps.core.mapper.*;
import com.aps.core.service.*;
import com.aps.core.service.ApsPlate.*;
import com.aps.core.service.IApsBomService;
import com.aps.core.service.IApsMaterialStorageManagementService;
import com.aps.core.service.IApsStandardProcessRouteLineService;
import com.aps.system.api.domain.SysDictData;
import jakarta.annotation.Resource;
import com.aps.core.domain.ApsPlate.ApsPlateStandardRequire;
import com.aps.core.mapper.ApsPlateStandardRequireMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.math.BigDecimal;
import java.util.*;
/**
 * 钣金工单标准需求Service业务层处理
@@ -39,29 +37,17 @@
    private ApsPlateStandardRequireMapper apsPlateStandardRequireMapper;
    @Resource
    private ApsPlateStandardRequireBatchMapper requireBatchMapper;
    @Resource
    ApsPlatePlanMapper platePlanMapper;
    @Resource
    ApsBomHeaderMapper bomHeaderMapper;
    @Resource
    IApsBomService bomLineService;
    @Resource
    ApsMaterialStorageManagementMapper itemStorageMapper;
    @Resource
    ApsPlateStandardRequireBomStockDetailMapper plateBomStockDetailMapper;
    @Resource
    IApsPlateStandardRequireBomStockDetailService bomStockDetailService;
    @Resource
    ApsStandardProcessRouteHeaderMapper standardProcessRouteHeaderMapper;
    @Resource
    ApsStandardProcessRouteLineMapper ApsStandardProcessRouteLineMapper;
    @Resource
    ApsPlateStandardRequireBomOrderDetailMapper plateBomOrderDetailMapper;
@@ -76,10 +62,11 @@
    IApsStandardProcessRouteLineService routeLineService;
    @Resource
    IApsPlateStandardRequireBatchService requireBatchService;
    IApsPlateStandardRequireErrorService requireErrorService;
    @Resource
    private IApsMaterialStorageManagementService storageManagementService;
    @Resource
    IApsPlateStandardRequireBatchService requireBatchService;
    /**
     * 查询钣金工单标准需求
     * 
@@ -167,15 +154,11 @@
    @Transactional
    @Override
    public void generatorPlan(String batchNum){
        /*初始化数据*/
        requireBatchService.initRequireBatch();
        requireBatchService.initRequireBatch(batchNum);
        /*定义工厂为南通 */
        String plantCode="FORTUNA";
        /*定义主单类型为钣金主单*/
        String mainOrderType = "main";
        /*获取钣金主单信息*/
        List<ApsPlatePlan> mainPlans = platePlanMapper.selectPlatePlanByPlantMajor(plantCode,mainOrderType);
        List<ApsPlatePlan> mainPlans = platePlanMapper.selectPlatePlanByPlantMajor(plantCode);
        Hashtable<String, ApsMaterialStorageManagement> usedStorage = new Hashtable<>();
        /*内存中存储子件工单*/
        Hashtable<String, List<ApsPlatePlan>> subPlans = new Hashtable<>();
@@ -183,13 +166,9 @@
        for (ApsPlatePlan mainPlan : mainPlans) {
            String itemNumber = mainPlan.getItemNumber();
            /*根据料号 获取BOM Header */
            List<ApsPlateStandardRequire> requiresList=new ArrayList<>();
            List<ApsPlateStandardRequireBomStockDetail> stockDetailsList=new ArrayList<>();
            List<ApsPlateStandardRequireBomOrderDetail> orderDetailsList=new ArrayList<>();
            log.info("开始生成需求:工单号:"+mainPlan.getDocumentNumber());
            /*当前Bom节点处理完成后,处理下级BOM*/
            getBomRequires(plantCode, "0","0",itemNumber,BigDecimal.ONE, batchNum, null
@@ -302,7 +281,10 @@
        if (itemStorageOpt.isPresent()) {
            ApsMaterialStorageManagement     itemStorage=itemStorageOpt.get();
            BigDecimal remainderStock =itemStorage.getRemainderStock();
            BigDecimal remainderStock =BigDecimal.ZERO;
            if(null!=itemStorage.getRemainderStock()){
                remainderStock = itemStorage.getRemainderStock();
            }
            /*计算净需求 默认=需求数量*/
            if (remainderStock.compareTo(BigDecimal.ZERO) == 0) {
                require.setNetRequirement(require.getBomUseAmount());