zhanghl
2025-05-15 f16ec51787ed0cb094b71ff8146c740d944f729d
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java
@@ -1,10 +1,8 @@
package com.aps.core.service.impl;
import java.math.BigDecimal;
import java.util.Hashtable;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import cn.hutool.core.util.IdUtil;
import com.aps.common.core.utils.DateUtils;
@@ -16,6 +14,7 @@
import com.aps.core.mapper.ApsStandardProcessRouteHeaderMapper;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import com.aps.core.mapper.ApsStandardProcessRouteLineMapper;
import com.aps.core.domain.ApsStandardProcessRouteLine;
@@ -36,6 +35,9 @@
    ApsStandardProcessRouteHeaderMapper standardProcessRouteHeaderMapper;
    @Resource
    ApsPlateStandardRequireErrorMapper requireErrorMapper;
    @Resource
    private RedisTemplate redisTemplate;
    /**
     * 查询标准工艺路线Line
     * 
@@ -144,6 +146,52 @@
        // 返回总工时
        return ret;
    }
    @Override
    public ApsStandardProcessRouteLine getRouteHeaderRouteTime(ApsPlateStandardRequire require){
        //工厂
        String plant=require.getOrgCode();
        // 物料号
        String itemCode=require.getBomLineCode();
        // 净需求
        BigDecimal netRequirement=  require.getNetRequirement();
        //构建Redis Key
        String key = "ROUTE:ROUTE_"+plant+"_"+itemCode;
        BigDecimal totalRouteTime = BigDecimal.ZERO;
        ApsStandardProcessRouteLine ret=new ApsStandardProcessRouteLine();
        ret.setRouteId("0");
        ret.setRouteTime(totalRouteTime);
        Object routeHeaderObj = redisTemplate.opsForValue().get(key);
        if (routeHeaderObj != null) {
            totalRouteTime = (BigDecimal) routeHeaderObj;
            ret.setRouteId("0");
            ret.setRouteTime(totalRouteTime.multiply(netRequirement));
            return  ret;
        } else {
            saveRequireError(require,"标准工艺路线不存在");
            /*// 查询标准工艺路线头部信息
            Optional<ApsStandardProcessRouteHeader> firstProcessRoute = standardProcessRouteHeaderMapper.queryStandardProcessRouteHeaderByPlantAndItemCode(plant, itemCode).stream().findFirst();
            if (firstProcessRoute.isPresent()) {
                ApsStandardProcessRouteHeader routeHeader = firstProcessRoute.get();
                // 构建工艺路线行参数对象
                ApsStandardProcessRouteLine routeLineParam =new ApsStandardProcessRouteLine();
                routeLineParam.setRouteId(routeHeader.getRouteId());
                // 查询标准工艺路线行信息
                BigDecimal standardTime = apsStandardProcessRouteLineMapper.selectTotalStandTime(routeHeader.getRouteId()).getStandardTime();
                totalRouteTime =standardTime.multiply(netRequirement);
                // 计算返回的数据
                ret.setRouteTime(totalRouteTime);
                ret.setRouteId(routeHeader.getRouteId());
                *//*存储至Redis*//*
                redisTemplate.opsForValue().set(key, standardTime);
            }else {
                saveRequireError(require,"标准工艺路线不存在");
            }*/
            return ret;
        }
    }
    private void saveRequireError(ApsPlateStandardRequire require,String message) {
        ApsPlateStandardRequireError data = ApsPlateStandardRequireError.builder()